读书人

JDBC的奇怪有关问题宗师请进

发布时间: 2012-04-19 14:36:43 作者: rapoo

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

[解决办法]
人品问题
[解决办法]
菜鸟帮顶

读书人网 >J2EE开发

热点推荐