同一个sql直接在数据库中运行和java中运行结果不一样?

没事眯一会 2011-10-13 11:45:37
sql语句 select sum(xgd) as AA from ht_htxmgx where xmid not in(select inid from kp_xmzd where xmbh='HWNJA7') and htbh='KS01201004058'
直接在oracle中运行结果如图,但是在java程序中确实1,不知道是不是我rs结果集搞错了,请大家帮忙看下
pstmt = conn.prepareStatement("select sum(xgd) as AA from ht_htxmgx where xmid not in(select inid from kp_xmzd where xmbh=?) and htbh=?");
pstmt.setString(1, xmbh);
pstmt.setString(2, htbh);
rs = pstmt.executeQuery();
rs.next();
sum=Integer.parseInt(rs.getString("AA"));
...全文
430 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
没事眯一会 2011-10-13
  • 打赏
  • 举报
回复
传的两个值是不会错的,我debug好几遍,是不是我这样写有问题?
rs.next();
sum=Integer.parseInt(rs.getString("AA"));
风尘中国 2011-10-13
  • 打赏
  • 举报
回复
谁也不清楚你xmbh htbh存的变量值是否跟上面SQL语句的值,我只能告诉你,不可能结果不同,如果结果不同只能是人的理解出错了,计算机是不会错的
你可以首先打印输出xmbh htbh值看看,如果还一样
那么建议你不用预编译,直接用Statement 字符串拼接

String query="select sum(xgd) as AA from ht_htxmgx where xmid not in(select inid from kp_xmzd where xmbh="+xmbh+") and htbh="+"htbh";
System.out.println(query);

这样输出query之后跟上面的SQL语句仔细比对,一定能查出不同
小伙 2011-10-13
  • 打赏
  • 举报
回复
调试看过程。。
菖蒲老先生 2011-10-13
  • 打赏
  • 举报
回复
用debug出来的sql文执行试试。。。
liuheworld 2011-10-13
  • 打赏
  • 举报
回复
确认你这两个参数值传的对吗 xmbh=HWNJA7 htbh=KS01201004058
iCielo 2011-10-13
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 guominghua2 的回复:]

调试看过程。。
[/Quote]

同意,计算机是不会错的。
sum=Integer.parseInt(rs.getString("AA"));会报错吧。
kouyiSC 2011-10-13
  • 打赏
  • 举报
回复
这种sql 写法不规范。。。很危险。。。一旦为空,就null指针了。。
sql语句效率偏低。。。尽量避免in,not in ,改成连接查询也可以。。。
wolf863292 2011-10-13
  • 打赏
  • 举报
回复
劳驾以后代码贴的稍稍全一点。
sum的定义、catch的处理,都没有贴上。
帮你解决只能靠猜...
没事眯一会 2011-10-13
  • 打赏
  • 举报
回复
try{
conn = JDBCDataSource.getJDBCDataSource("jdbc.informix").getConnection();
Statement stmt = conn.createStatement();
String sql="select sum(xgd) as AA from ht_htxmgx where xmid not in(select inid from kp_xmzd where xmbh='"+xmbh+"') and htbh='"+htbh+"'";
rs = stmt.executeQuery(sql);
if(rs==null){
sum="";
}else{
rs.next();
sum=rs.getString("AA");
}
}

我吧代码改成这样就没问题了,但是这样和原来也没什么不一样啊
hchjjun 2011-10-13
  • 打赏
  • 举报
回复
是抛出的异常值吧
scrack 2011-10-13
  • 打赏
  • 举报
回复
select sum(xgd) as AA from ht_htxmgx where xmid not in(select inid from kp_xmzd where xmbh='HWNJA7') and htbh='KS01201004058' 直接把这个sql放进去试试
wolf863292 2011-10-13
  • 打赏
  • 举报
回复
如果是null,你的代码应该报异常了。

把整个try块的代码贴出来吧。
淡定的峰哥 2011-10-13
  • 打赏
  • 举报
回复
上面这样写没问题,只是不规范

连的可是同一个库?

81,092

社区成员

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

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