思路:在一个登录的对话框中,我把登陆ID作为查询的条件,当输入用户名在数据库中不存在时,用wasNull方法判断rs是否为空,
为空则弹出错误对话框,可是运行起来,似乎输入错误的用户名也无法弹出错误对话框,哪里出了问题?如何解决?.........
                      sqlStr="select * from 运动员信息表 where 姓名 = '"+ID.getText()+"'";
                    
                    ResultSet rs = st.executeQuery( sqlStr );
                                           if(rs.wasNull()){
                     MessageBox box=new MessageBox(sShell,SWT.ICON_ERROR|SWT.OK);
                     box.setText("登录出错!");
                     box.setMessage("用户名或密码错误!");
        
         box.open();
                    }
.......
                    

解决方案 »

  1.   

    此回复为自动发出,仅用于显示而已,并无任何其他特殊作用
    楼主【zhuyutian】截止到2008-07-03 11:55:55的历史汇总数据(不包括此帖):
    发帖的总数量:16                       发帖的总分数:580                      
    结贴的总数量:16                       结贴的总分数:580                      
    无满意结贴数:1                        无满意结贴分:30                       
    未结的帖子数:0                        未结的总分数:0                        
    结贴的百分比:100.00%               结分的百分比:100.00%                  
    无满意结贴率:6.25  %               无满意结分率:5.17  %                  
    敬礼!
      

  2.   

    你的rs并不是null.而是没有记录.你滴明白了吗?拿if(!rs.next())来判断
      

  3.   

    你的RS是有引用地址的,所以在我看来,就不是NULL,就象
    String s1=new String();
    String s2=null;s1不是null,s2是null....
      

  4.   

    rs是不会为空的,可以用这样的方法,
    String idinfo=rs.getString(id);
    if(idinfo==null && idinfo==""){
    .....
    }
      

  5.   

    rs不可能为空,它有指向的对象,即String,这个String为空或" "
      

  6.   

    wasNull 不是判断结果集是否为空,而是判断刚刚读取出的字段值是否为数据库中的 null。
    直接 rs.next() 就行,如果结果集为空它返回 false,如果至少一条查询结果它返回 true。
      

  7.   

    if(rs.next){
     ...
    }很多方法光看名字感觉很像可以满足你的要求,但如果在不清楚的情况下乱用以后如果出现问题就很难找到错误所在。
      

  8.   

    Oh,Sorry.if(rs.next()){ 
    ... 
      

  9.   

    if(rs.next()){ 
    ... 
      

  10.   


    正解,
    楼主不要从方法名判断它的用途,要看API文档
      

  11.   


    wasNull:
    报告最后一个读取的列是否具有值 SQL NULL。注意,必须首先对列调用一个获取方法来尝试读取其值,然后调用 wasNull 方法查看读取的值是否为 SQL NULL。
    next():
    将指针从当前位置下移一行。ResultSet 指针最初位于第一行之前;第一次调用 next 方法使第一行成为当前行;第二次调用使第二行成为当前行,依此类推