↑↓ 选择 ↵ 打开 ⌫ 改范围 完整检索页

pgsql.cc 提供对 postgresql.org 官网内容的中文翻译,由 Pigsty 团队维护。

不受支持的版本: 6.5
历史版本PostgreSQL 6.5 已于 2004 年 6 月结束社区维护,本页译文保留供仍在使用旧版本的读者参考。新系统请看当前版本手册首页。

50.7. 发出查询并处理结果

每当你想向数据库发出 SQL 语句时,你都需要一个 Statement 实例。一旦你有了一个 Statement,就可以使用 executeQuery() 方法发出查询。这将返回一个 ResultSet 实例,其中包含 全部结果。

50.7.1. 使用 Statement 接口

使用 Statement 接口时必须考虑以下几点:

  • 你可以按需多次使用一个 Statement 实例。你可以在打开连接后 立即创建一个,并在该连接的整个生命周期中使用它。你必须 记住,每个 Statement 只能存在一个 ResultSet。

  • 如果你需要在处理一个 ResultSet 期间执行另一个查询, 只需创建并使用另一个 Statement 即可。

  • 如果你使用线程,而且有多个线程在使用数据库,就必须 为每个线程使用一个单独的 Statement。如果你打算使用它们, 请参阅本文档后面介绍线程和 Servlet 的章节, 其中涵盖了一些重要的内容。

50.7.2. 使用 ResultSet 接口

使用 ResultSet 接口时必须考虑以下几点:

  • 在读取任何值之前,你必须调用 next()。如果有结果它会返回 true,但更重要的是,它会让该行做好被处理的准备。

  • 按照 JDBC 规范,你应该只访问一个字段一次。遵守 这条规则是最安全的,尽管目前 Postgres 驱动 允许你按需多次访问一个字段。

  • 一旦用完一个 ResultSet,你必须通过调用 close() 来关闭它。

  • 一旦你用创建某个 ResultSet 的 Statement 请求另一个 查询,当前打开的实例就会被关闭。

下面是一个例子:

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();

提交更正

译文有误、术语不当或页面显示问题,请到译文仓库 pgsty/pgdoc 报告译文问题。 英文原文本身的问题,请在当前版本的对应页面向上游反馈;上游不再修订已结束维护的版本。