用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,那么他就往后走了一下,等你在遍历的时候,他已经走了第一条数据了,所以就从第二条数据开始取了,明白了吧
------解决思路----------------------
pStatement.execute()返回true不代表你就能查询出来值,只能说明你的sql顺利执行完了,即使结果集是空的。
比如你传这条SQL进去,pStatement.execute()的到的结果一样是true。
SELECT 1 FROM dual WHERE 1=2;