java set中取数据_Java中取数据库用的ResultSet问题

这段时间做java项目,在操作数据库的时候,犯了一个错误,请看下面的程序

.......                        //前面连接数据库方面的省略

ResultSet  result = statement.executeQuery(strSQL);

//开始读取数据并写到List中

if (result.next()) {

//有数据

result.first();

while (result.next()) {

lstData.add(result.getString("columname"));

}

}

结果一看数据库,少了一条数据,问题出在哪里呢?

一看帮助,原来是next的问题,在第一次执行result.next()之前,result并不指向第一行数据,执行以后才指向第一条数据,如果第一条数据我们说他的索引是0的话,那么第一次执行result.next()之前,可以理解成result指向的索引为-1(个人意见),而first()方法同样也是将result指向第一行数据,所以在后面执行while循环的时候,数据就从第二行开始取了。于是上面的程序可改成

if (result.next()) {

//有数据

result.first();

lstData.add(result.getString("columname"));

while (result.next()) {

lstData.add(result.getString("columname"));

}

}

这样就没有错误了,但是这样写总感觉有点累赘,于是再改成下面的情况

while (result.next()) {

lstData.add(result.getString("columname"));

}

//到这里再判断数据有没有

if (lstData.size() > 0) {

//有数据

} else {

//没有数据

}

结合上面两个方法,其实各有适合的场合,如果只是判断数据有没有 直接用

if (result.next()) {

//有数据

}

就可以了,如果程序里面要取出数据并处理 那么最后一种方法应该更好一些吧。

posted on

2006-06-20 12:36

gigikouyi

阅读(7942)

评论(2)

编辑

收藏

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值