JDBC的奇怪问题,宗师请进
小弟浸淫JDBC也有三四年了,自信虽不能说精通,但总还是会使用jdbc操作数据库的。
可是今天有这么段代码代码,让我郁闷了,虽然问题解决的,但不知所以然,因此贴出代码,供宗师们参详,
还望知道原因的宗师们给指点下。
PreparedStatement pst=null;
ResultSet rs=null;
String sql=null;
PremSumInfoModel pPremSumInfoModel=null;
try{
sql="select * from TMS_PREM_SUM_INFO a where a.PREM_SUM_INFO_ID=" +
"(select max(t.PREM_SUM_INFO_ID) from TMS_PREM_SUM_INFO t where t.apply_id = ? and t.status in (0,1,2))";
pst=con.prepareStatement(sql);
pst.setString(1,apply_id);
rs=pst.executeQuery();
if(rs.next()){
pPremSumInfoModel=wrapModel(rs);
}
。。。。。。。。
声明一下:后台数据里有数据,在pl/sql执行,能够查询出结果,后台数据的status=2。
但是JDBC执行到rs.next()的时候,debug获得rs.next()=false;
之后修改代码,查资料,都木有解决。
之后偶然把sql中“and t.status in (0,1,2)”去掉,竟然OK了;
之后又把sql中“and t.status in (0,1,2)”改为“and t.status not in (3,4)”(说明:status只有0、1、2、3、4五个码值)竟然也OK了。
此时此景,我愤怒了!
这到底是为什么?
------解决方案--------------------如果
and t.status in (0,1,2)
改成
and (t.status = 0 or t.status = 1 or t.status = 2)
呢
------解决方案-------------------- if(rs.next()){
pPremSumInfoModel=wrapModel(rs);
}
改成
while (rs.next()){
pPremSumInfoModel=wrapModel(rs);
}
------解决方案--------------------人品问题
------解决方案--------------------菜鸟帮顶