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()) {
//有数据
}
就可以了,如果程序里面要取出数据并处理 那么最后一种方法应该更好一些吧。
....... //前面连接数据库方面的省略
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 阅读(8192) 评论(2) 编辑 收藏 举报