首先要说微软的jdbc驱动只能按顺序查询!看一下你的where条件里面是不是那找表的存储顺序写的!

解决方案 »

  1.   

    好像报错的不是执行查询的时候啊,赫赫,现丑了!是不是userid之前还有字段阿,先把前面的字段取出来看看。
      

  2.   

    还有如果rs为空的话也会异常的!看看这个吧:http://dbforums.com/arch/193/2003/8/860289
      

  3.   

    String sql="select * from userMessage where usrid='"+userid+"'and password='"+pw+"' and usr_grant='"+user_grant+"';";产生的sql语句可能是错误的,你把sql打出来就知了。
      

  4.   

    应该是加上where以后没有查出记录!然后你就直接rs.next(),这样就出异常了!这个好像是微软驱动的问题吧!
      

  5.   

    我把这个sql语句放到查询分析器里面也没有问题啊,能查询到。而且查询的顺序也没有问题的。usrid是第一个列。password第二列,usr_grant是第三列...
    后来我又写了个数据库插入的servlet,和上面的servlet类似,插入也执行不了。
    to ningIII(小宁) :userid之前还有字段是指的什么呢,我不是很清楚。
      

  6.   

    我测试过了,导致异常发生不是因为result.next()为空,而是因为加上where后根本就没有执行这个查询操作。
      

  7.   

    String sql="select * from userMessage where usrid='"+userid+"'and password='"+pw+"' and usr_grant='"+user_grant+"';(这个分号是多余的)";
    你写sql最好
    sql =  "";
    sql = sql +"....";//这样清晰
      

  8.   

    to  kongxiangli(笑看红尘) :这个分号有影响吗?好象有和没有都行吧。
      

  9.   

    String sql="select * from userMessage where usrid='"+userid+"'and password='"+pw+"' and usr_grant='"+user_grant+"';";这句话有问题,应该改正为
    String sql="select * from userMessage where usrid='"+userid+"'and password='"+pw+"' and usr_grant='"+user_grant+"'";
      

  10.   

    to  lyilei(清泉冷冰) :我在SQL2000的查询分析器里面试了那个语句,好象加了;和不加;都一样,回头我再在程序里改掉试试,
      

  11.   

    我在程序里改了,去掉;还是不行,错误还是一样,郁闷ing 啊应该不是;的问题吧
      

  12.   

    String sql="select * from userMessage where usrid='"+userid+"'and password='"+pw+"' and usr_grant='"+user_grant+"';"
    这里“;”不需要!!
    在stm.executeQuery(sql)里,会给你自动加“;”!
      

  13.   

    <%@ page contentType="text/html;charset=gb2312"%> 
      <%@ page import="java.sql.*"%> 
      <html> 
      <body> 
      <%Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver").newInstance(); 
      String url="jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=pubs"; 
      //pubs为你的数据库的 
      String user="sa"; 
      String password=""; 
      
      Connection conn= DriverManager.getConnection(url,user,password); 
      Statement stmt=conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE); 
      String sql="select * from test"; 
      ResultSet rs=stmt.executeQuery(sql); 
      while(rs.next()) {%> 
      您的第一个字段内容为:<%=rs.getString(1)%> 
      您的第二个字段内容为:<%=rs.getString(2)%> 
      <%}%> 
      <%out.print("数据库操作成功,恭喜你");%> 
      <%rs.close(); 
      stmt.close(); 
      conn.close(); 
      
      %> 
      </body> 
      </html> 
    给你一个连接Sql Server的jsp作参考!
      

  14.   

    String sql="select * from userMessage where usrid='"+userid+"'and password='"+pw+"' and usr_grant='"+user_grant+"';";这句改为:就OK了。String sql="select * from userMessage where usrid= '"+userid+"' and password='"+pw+"' and usr_grant='"+user_grant+"'";
    哈,给分吧,你中间有两处错误,
      

  15.   

    照我上面的copy过去就行了, 因为上面就两行,你必须写在一行里。
    要不这样写也可以:
    String sql="select * from userMessage where usrid= '"+userid+"'";
    sql=sql +" and password='"+pw+"' and usr_grant='"+user_grant+"'";
      

  16.   

    把长的SQL语句分行写,空格放在前面,就能避免这样的问题,说到底,是开发规范的问题
      

  17.   

    楼上个各位,谢谢啦.我已经找到错误得地方了.可是不知道怎么解决.就是我数据库里面得usrid,usr_grant什么的都是中文.所以查询的时候没法和从jsp提取出来的userid匹配.从而导致异常,如果换成英文的用户名查询的话就没问题.谁教教我怎么解决.解决了马上结贴.再次谢谢各位.
      

  18.   

    楼上个各位,谢谢啦.不过你们说的那些都不是问题的关键地方:)我已经找到错误得地方了.可是不知道怎么解决.就是我数据库里面得usrid,usr_grant什么的都是中文.所以查询的时候没法和从jsp提取出来的userid匹配.从而导致异常,如果换成英文的用户名查询的话就没问题.谁教教我怎么解决.解决了马上结贴.再次谢谢各位.
      

  19.   

    问题已经搞定了,是servlet里的中文编码和SQL里的不一样,用英文的话就没问题,换个编码就行了,还是要感谢楼上的各位。。