日期:2014-05-17  浏览次数:20683 次

同一个sql直接在数据库中运行和java中运行结果不一样?
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"));


------解决方案--------------------
谁也不清楚你xmbh htbh存的变量值是否跟上面SQL语句的值,我只能告诉你,不可能结果不同,如果结果不同只能是人的理解出错了,计算机是不会错的
你可以首先打印输出xmbh htbh值看看,如果还一样
那么建议你不用预编译,直接用Statement 字符串拼接
Java code

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);

------解决方案--------------------
这种sql 写法不规范。。。很危险。。。一旦为空,就null指针了。。
sql语句效率偏低。。。尽量避免in,not in ,改成连接查询也可以。。。