JDBC那些事(二)——查询结果集_ResultSet

来源:互联网 发布:孤寡老人数据 编辑:程序博客网 时间:2024/06/05 06:03

接上一篇,JDBC的查询返回值相对复杂一点,所以单独写。上一篇写到stmt.excuteUpdate(sql);执行结果返回的是int类型的值。此处的sql语句为非查询语句。而如果要执行查询语句则需要使用Statement对象的excuteQuery(sql);我们都知道在cmd或者图形化界面下执行查询语句返回的是一个二维的数据表格。那么如果JDBC需要拿到查询结果数据,就必须遍历表格。

JDBC给执行查询结果定一个了一个返回结果集的类型ResultSet ,在ResultSet中有一个指向行的光标。

查询结果集和行标起始位置

ResultSet rs = stmt.executeQuery(sql); rs为结果对象集。通过rs.next();进行行(hang)遍历,rs提供了getString(i),getString("a"),(i为第几列,a为对应的列明)两种方式进行列表遍历;所以只要能够获得查询结果集的总列数。通过行列遍历就可以遍历整个查询的结果集。我们可以通过rs.getMetaData().getColumnCount();的方式获取到插叙结果集。这样便可以进行结果集的遍历。遍历核心代码如下:

int count = rs.getMetaData().getColumnCount();while(rs.next()) {//遍历行,next()方法返回值为Boolean,当存在数据行返回true,反之falsefor(int i = 1; i <= count; i++) {//遍历列System.out.print(rs.getString(i));if(i < count) {System.out.print("---");//为数据隔开美观,没实际意义}}System.out.println();}
这样数据结果集就遍历了。

顺便说一下,完整的JDBC代码连接过程代码有三个对象是需要关闭的,不然后容易引发不可预测的错误。关闭的时候注意下关闭顺序,先定义的后关闭。即:

if(rs != null) rs.close();f(stmt != null) stmt.close();if(con != null) con.close();

0 0
原创粉丝点击