使用 Statement.executeQuery 方法从表中检索数据

要使用不带参数标记的 SELECT 语句从表中检索数据,可以使用 Statement.executeQuery 方法。

关于本任务

此方法返回 ResultSet 对象中的结果表。 获取结果表之后,需要使用 ResultSet 方法来移动结果表,并从每一行获取各个列值。

使用 IBM® Data Server Driver for JDBC and SQLJ ,您还可以使用 Statement.executeQuery 方法从存储过程调用中检索结果集(如果该存储过程仅返回一个结果集)。 如果存储过程返回多个结果集,那么需要使用 Statement.execute 方法。

本主题讨论最简单类型的 ResultSet,它是只读 ResultSet,您在其中一次只能向前移动一行。 IBM Data Server Driver for JDBC and SQLJ 还支持可更新和可滚动 ResultSet秒。

过程

要使用不带参数标记的 SELECT 语句从表中检索行,您需要执行下列步骤:

  1. 调用 Connection.createStatement 方法创建一个 Statement 对象。
  2. 调用 Statement.executeQuery 方法,从 ResultSet 对象中的SELECT语句获取结果表。
  3. 在循环中,使用 next 方法定位光标,并使用 getXXX 方法从 ResultSet 对象的当前行的每一列中检索数据。 XXX 代表一种数据类型。
  4. 调用 ResultSet.close 方法关闭 ResultSet 对象。
  5. 当您使用完 Statement 对象后,请调用 Statement.close 方法关闭该对象。

示例

以下代码演示了如何从员工表中检索所有行。 所选语句右边的数字对应于先前描述的步骤。
图 1。 使用 Statement.executeQuery
String empNo;
Connection con;
Statement stmt;
ResultSet rs;
…
stmt = con.createStatement();     // Create a Statement object           1 
rs = stmt.executeQuery("SELECT EMPNO FROM EMPLOYEE");                    2 
                                  // Get the result table from the query
while (rs.next()) {               // Position the cursor                 3 
 empNo = rs.getString(1);             // Retrieve only the first column value
 System.out.println("Employee number = " + empNo);
                                  // Print the column value
}
rs.close();                       // Close the ResultSet                 4 
stmt.close();                     // Close the Statement                 5