public WAB30MRec select(String dwg_no) throws Exception{
WAB30MRec wab30m = null;
PreparedStatement pstmt = null;
ResultSet rs = null;
try{
String query = "Select dwg_no, cut_bay_no, cut_mch_code, cut_pln_date, cut_adjt_dur, cary_due_date, wv_uom, mtl_mat_grd, stl_thck_1, " +
"stl_thck_2, stl_bdth_1, stl_bdth_2, stl_lnth, stl_cgrt, stl_qty, cut_req_qty, btch_cnt, cut_lnth, " +
"_lnth, cut_rap_lnth, _rap_lnth, pln_week_no, pln_cnfm_indc, std_mh, rgsr_emp_no, rgsr_date, rgsr_time, " +
"mnt_emp_no, mnt_date, mnt_time " +
" from HP.WAB30M " +
" where dwg_no = ? ";
pstmt = connection.prepareStatement(query);
pstmt.setString(1,dwg_no);
rs = pstmt.executeQuery(); if(rs.next()){
wab30m = new WAB30MRec(); // WAB30MRec Constructor
wab30m.setDwg_no(rs.getString("dwg_no"));
.........
} else {
throw new DataNotFoundException();
} // end if
} finally {
try{rs.close();}catch(Exception e){}
try{pstmt.close();}catch(Exception e){}
} // try-finally
return wab30m;
}==============================
数据库中dwg_no值 : 4449DS626CNH02 4449DS626CNH04 这两个值都存在
当调用这个函数时,参数为4449DS626CNH02 时. 执行到if(rs.next())时可以继续往下执行,当参数值为4449DS626CNH04 时, 执行到if(rs.next())时就会直接跳到else语句上. 这是什么原因??,好奇怪..
WAB30MRec wab30m = null;
PreparedStatement pstmt = null;
ResultSet rs = null;
try{
String query = "Select dwg_no, cut_bay_no, cut_mch_code, cut_pln_date, cut_adjt_dur, cary_due_date, wv_uom, mtl_mat_grd, stl_thck_1, " +
"stl_thck_2, stl_bdth_1, stl_bdth_2, stl_lnth, stl_cgrt, stl_qty, cut_req_qty, btch_cnt, cut_lnth, " +
"_lnth, cut_rap_lnth, _rap_lnth, pln_week_no, pln_cnfm_indc, std_mh, rgsr_emp_no, rgsr_date, rgsr_time, " +
"mnt_emp_no, mnt_date, mnt_time " +
" from HP.WAB30M " +
" where dwg_no = ? ";
pstmt = connection.prepareStatement(query);
pstmt.setString(1,dwg_no);
rs = pstmt.executeQuery(); if(rs.next()){
wab30m = new WAB30MRec(); // WAB30MRec Constructor
wab30m.setDwg_no(rs.getString("dwg_no"));
.........
} else {
throw new DataNotFoundException();
} // end if
} finally {
try{rs.close();}catch(Exception e){}
try{pstmt.close();}catch(Exception e){}
} // try-finally
return wab30m;
}==============================
数据库中dwg_no值 : 4449DS626CNH02 4449DS626CNH04 这两个值都存在
当调用这个函数时,参数为4449DS626CNH02 时. 执行到if(rs.next())时可以继续往下执行,当参数值为4449DS626CNH04 时, 执行到if(rs.next())时就会直接跳到else语句上. 这是什么原因??,好奇怪..
解决方案 »
- 如何停止一个请求
- ajax
- 下班了,祝大家元旦快乐!!!!
- 急!求助
- 请教一些jsp浮数相加的问题,相加完的结果不对
- 写了一个struts+hibernate+spring的例子,如何在applicationContext.xml中配置多个DAO?(不好意思没分了)
- (50分) 熟悉 Tomcat + Linux 的高手请进……
- 急!!在weblogic7下配置好的db2连接池,如何在javabean中调用?
- 可以将String转化为Blob类型么?在线给分
- 我准备学jsp,请大家推荐几本适合初学者的好书?
- 如何用jsp写一个ajax跨域代理
- JSF中怎样在一个bean中初始化另一个bean?
可能是类型问题
把打印出来的sql语句拿到数据库去执行
会不会因为参数和数据库中的数据中有什么空格之类的,看上去好像字符串一样,但实际上由于有空格,所以sql文是拿不到结果的。
别忘了" where dwg_no = '' ";加引号啊
建议:
1)" where dwg_no = ? ";改为" where dwg_no like ? ";
2)pstmt.setString(1,dwg_no.trim()+"%");这样试一试.
SQL> select dwg_no from wab30m where dwg_no = '4449DS626CNH04';DWG_NO
--------------------------------
4449DS626CNH04能够查询出数据来呀,没有空格.要是有空格的话不会有数据的.
太奇怪了.不知能有高手解释一下这是为什么.
在循环体开始前先显示一下数据(RS.NEXT前),进入循环再显示一下数据,我怀疑RS内的第一条数据被跳过去了
rs初始的时候是指向第一条数据,如果rs为空rs.isAfterLast()为真也就是你IF里的条件应该是(!rs.isAfterLast())
next()是要移动rs的指针的,当你的查询结果只有一条的时候,肯定要执行else后面的语句
也就是说
4449DS626CNH02符合这个值的数据应该在一条以上
4449DS626CNH04符合这个值的数据只有一条
rs初始的时候是指向第一条数据,如果rs为空rs.isAfterLast()为真也就是你IF里的条件应该是(!rs.isAfterLast())
next()是要移动rs的指针的,当你的查询结果只有一条的时候,肯定要执行else后面的语句
也就是说
4449DS626CNH02符合这个值的数据应该在一条以上
4449DS626CNH04符合这个值的数据只有一条
==========================================
rs初始的时候是指向第一条数据的上面。而不是指向第一条数据
rs.next(); //这里也修改
wab30m = new WAB30MRec(); // WAB30MRec Constructor
wab30m.setDwg_no(rs.getString("dwg_no"));
.........
} else {
throw new DataNotFoundException();