在任何你想向数据库运行一个SQL语句的时候, 你都需要一个Statement (语句)实例. 一旦你拥有了一个Statement (语句),你就可以使用 executeQuery() 方法来运行一个查询. 这样将返回一个 ResultSet 实例, 在其内部包含整个结果. Example 8-1 演示了这个过程.
Example 8-1. 在 JDCB 里处理一个简单的查询
这个例子将发出一个简单的查询然后打印出每行的第一个字段.
Statement st = db.createStatement(); ResultSet rs = st.executeQuery("SELECT * FROM mytable"); while(rs.next()) { System.out.print("Column 1 returned "); System.out.println(rs.getString(1)); } rs.close(); st.close();
在使用Statement接口时必须考虑下面的问题:
你可以将一个Statement(语句)实例使用任意次. 你可以在打开一个联接后马上创建一个Statement (语句)实例, 并且在联接的生存期里使用之. 你必须记住每个Statement只能存在一个 ResultSet (结果集).
如果你需要在处理一个ResultSet的时候执行一个查询, 你只需要创建并且使用另外一个Statement.
如果你使用了 threads (线程),并且有几个使用数据库, 你对每个线程必须使用一个独立的Statement. 如果考虑使用线程, 请参考本文档稍后的 Section 8.7 章节, 因为这些内容包含一些重要的信息.
使用ResultSet接口时必须考虑下面的问题:
在读取任何数值的时候,你必须调用next(). 如果还有结果则返回真(true),但更重要的是,它为处理准备了数据行.
在 JDBC 规范里,你对一个字段应该只访问一次. 遵循这个规则是最安全的,不过目前 Postgres 驱动将允许你对一个字段访问任意次.
一旦你结束对一个 ResultSet 的处理,你必须对之调用 close()来关闭它。
一旦你使用那个创建ResultSet的 Statement做另一个查询请求, 当前打开的 ResultSet 实例将自动关闭.