当前位置: 代码迷 >> Java Web开发 >> 用JDBC查询时为啥得不到第一条记录
  详细解决方案

用JDBC查询时为啥得不到第一条记录

热度:67   发布时间:2016-04-16 21:25:59.0
用JDBC查询时为什么得不到第一条记录?
用JDBC查询时执行exectue()方法返回值为true,但是用exectueQuery()后,rSet.next()却为false?

代码如下:
public float searchBalance(BankBean bank){
try {
conn=DBConn.getconn();
String sql="select * from bank where Card_no=?";
pStatement=conn.prepareStatement(sql);
System.out.println(bank.getCardNo());
pStatement.setString(1, bank.getCardNo());
System.out.println(pStatement.execute());
rSet=pStatement.executeQuery();
System.out.println(rSet.next());
if(rSet.next()){
return rSet.getFloat("Card_money");
}else {
return 0;
}
} catch (Exception e) {
e.printStackTrace();
System.out.println("查询余额失败!");
return 0;
}

}
------解决思路----------------------
楼主没清楚rSet.next()的含义,这是一个类似指针的东西,你System.out了一下next,那么他就往后走了一下,等你在遍历的时候,他已经走了第一条数据了,所以就从第二条数据开始取了,明白了吧
------解决思路----------------------
引用:
Quote: 引用:

Quote: 引用:

System.out.println(rSet.next());这句话的打印结果就为false
 
那是不是你的条件本来就没有值呢

那为什么System.out.println(pStatement.execute());这句话打印出来为true

pStatement.execute()返回true不代表你就能查询出来值,只能说明你的sql顺利执行完了,即使结果集是空的。
比如你传这条SQL进去,pStatement.execute()的到的结果一样是true。
SELECT 1 FROM dual WHERE 1=2;
  相关解决方案