用JDBC查询时为什么得不到第一条记录?

fishcss 2015-01-22 10:14:53
用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;
}

}
...全文
726 20 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
20 条回复
切换为时间正序
请发表友善的回复…
发表回复
fishcss 2015-01-26
  • 打赏
  • 举报
回复
引用 16 楼 meng_taiqian 的回复:
那为什么System.out.println(pStatement.execute());这句话打印出来为true
pStatement.execute()返回true不代表你就能查询出来值,只能说明你的sql顺利执行完了,即使结果集是空的。 比如你传这条SQL进去,pStatement.execute()的到的结果一样是true。
SELECT 1 FROM dual WHERE 1=2;
[/quote] 原来是这样的!那应该是哪里出问题了?
IT农民在路上 2015-01-26
  • 打赏
  • 举报
回复
8楼说的对。
baidu_25552825 2015-01-23
  • 打赏
  • 举报
回复
8楼正解, 呵呵呵呵,凑足6个字
meng_taiqian 2015-01-23
  • 打赏
  • 举报
回复
引用 7 楼 fishcss 的回复:
[quote=引用 6 楼 z345434645 的回复:] [quote=引用 4 楼 fishcss 的回复:] System.out.println(rSet.next());这句话的打印结果就为false
那是不是你的条件本来就没有值呢[/quote] 那为什么System.out.println(pStatement.execute());这句话打印出来为true[/quote] pStatement.execute()返回true不代表你就能查询出来值,只能说明你的sql顺利执行完了,即使结果集是空的。 比如你传这条SQL进去,pStatement.execute()的到的结果一样是true。
SELECT 1 FROM dual WHERE 1=2;
邹邹wl 2015-01-22
  • 打赏
  • 举报
回复
引用 4 楼 fishcss 的回复:
System.out.println(rSet.next());这句话的打印结果就为false
那是不是你的条件本来就没有值呢
fishcss 2015-01-22
  • 打赏
  • 举报
回复
引用 1 楼 benluobobo 的回复:
System.out.println(rSet.next()); 这句话去掉
这句话打印出来就为false的
fishcss 2015-01-22
  • 打赏
  • 举报
回复
System.out.println(rSet.next());这句话的打印结果就为false
邹邹wl 2015-01-22
  • 打赏
  • 举报
回复
System.out.println(rSet.next()); if(rSet.next()){ 打印的这条语句已经遍历了一次 if里面的遍历的是第二条数据,所以你这个值有问题。
wx3957156 2015-01-22
  • 打赏
  • 举报
回复
引用 1 楼 benluobobo 的回复:
System.out.println(rSet.next()); 这句话去掉
很有可能就是这句已经把next值给取出来,所有就没有next啦。
benluobo 2015-01-22
  • 打赏
  • 举报
回复
System.out.println(rSet.next()); 这句话去掉
ab637800 2015-01-22
  • 打赏
  • 举报
回复
8楼又教会了我一个东西。学习了。
fishcss 2015-01-22
  • 打赏
  • 举报
回复
引用 13 楼 jimmy609 的回复:
如果删除了还进不去 ,那就是rSet本身就是空的,把sql打印出来看下~~~
select * from bank where Card_no=?
咖啡加糖_ 2015-01-22
  • 打赏
  • 举报
回复
引用 12 楼 fishcss 的回复:
[quote=引用 8 楼 jimmy609 的回复:] 楼主没清楚rSet.next()的含义,这是一个类似指针的东西,你System.out了一下next,那么他就往后走了一下,等你在遍历的时候,他已经走了第一条数据了,所以就从第二条数据开始取了,明白了吧
我把 System.out.println(rSet.next());删除后,还是进不去if语句[/quote] 如果删除了还进不去 ,那就是rSet本身就是空的,把sql打印出来看下~~~
fishcss 2015-01-22
  • 打赏
  • 举报
回复
引用 8 楼 jimmy609 的回复:
楼主没清楚rSet.next()的含义,这是一个类似指针的东西,你System.out了一下next,那么他就往后走了一下,等你在遍历的时候,他已经走了第一条数据了,所以就从第二条数据开始取了,明白了吧
我把 System.out.println(rSet.next());删除后,还是进不去if语句
fishcss 2015-01-22
  • 打赏
  • 举报
回复
引用 8 楼 jimmy609 的回复:
楼主没清楚rSet.next()的含义,这是一个类似指针的东西,你System.out了一下next,那么他就往后走了一下,等你在遍历的时候,他已经走了第一条数据了,所以就从第二条数据开始取了,明白了吧
我把System.out.println(pStatement.execute());删掉后还是进不到if语句
引用 7 楼 fishcss 的回复:
[quote=引用 6 楼 z345434645 的回复:] [quote=引用 4 楼 fishcss 的回复:] System.out.println(rSet.next());这句话的打印结果就为false
那是不是你的条件本来就没有值呢[/quote] 那为什么System.out.println(pStatement.execute());这句话打印出来为true[/quote] 错了,是输出为false
abbqq12 2015-01-22
  • 打赏
  • 举报
回复
System.out.println(pStatement.execute());为true表示他执行成功吧,并不一定代表他查询到值吧。
clook819 2015-01-22
  • 打赏
  • 举报
回复
8楼说的对。
咖啡加糖_ 2015-01-22
  • 打赏
  • 举报
回复
楼主没清楚rSet.next()的含义,这是一个类似指针的东西,你System.out了一下next,那么他就往后走了一下,等你在遍历的时候,他已经走了第一条数据了,所以就从第二条数据开始取了,明白了吧
fishcss 2015-01-22
  • 打赏
  • 举报
回复
引用 6 楼 z345434645 的回复:
[quote=引用 4 楼 fishcss 的回复:] System.out.println(rSet.next());这句话的打印结果就为false
那是不是你的条件本来就没有值呢[/quote] 那为什么System.out.println(pStatement.execute());这句话打印出来为true

81,122

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧