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

接上一篇,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,反之false
				for(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();

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值