首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > Java Web开发 >

奇怪有关问题,大家帮小弟我分析一下

2012-01-29 
奇怪问题,大家帮我分析一下.publicWAB30MRecselect(Stringdwg_no)throwsException{WAB30MRecwab30mnullP

奇怪问题,大家帮我分析一下.
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,   "   +
                                                            "mark_lnth,   cut_rap_lnth,   mark_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语句上.     这是什么原因??,好奇怪..

[解决办法]
数据库中的数据有空格感觉.
建议:
1) " where dwg_no = ? ";改为 " where dwg_no like ? ";
2)pstmt.setString(1,dwg_no.trim()+ "% ");

这样试一试.
[解决办法]
重说一下,刚才没有仔细看你的代码:)
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初始的时候是指向第一条数据的上面。而不是指向第一条数据

热点排行