注意要加try-catch捕获异常!
if(!result.next()) 不是很明白!

解决方案 »

  1.   

    SQLSERVER有一个乖僻就是在用结果集合取数据的时候,必须按照SELECT中列的顺序取值,否则就会报错
      

  2.   

    这样吧,看我的测试文件。testMssql.jsp
    <%@ page contentType="text/html; charset=gb2312" language="java" import="java.sql.*,java.io.*"%>
    <html>
    <body>
    以下是从Ms sql server数据库读取的数据:<hr>
    <table border=1>
    <tr><td>id</td><td>书名</td><td>出版社</td><td>价格</td></tr>
    <%
       Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver").newInstance();
       Connection con=java.sql.DriverManager.getConnection("jdbc:microsoft:sqlserver://127.0.0.1:1433;DatabaseName=netet","sa");
       Statement stmt=con.createStatement();
        ResultSet rst=stmt.executeQuery("select * from user_info;");
        while(rst.next())
        {
        out.println("<tr>");
        out.println("<td>"+rst.getString("User_id")+"</td>");
        out.println("<td>"+rst.getString("User_name")+"</td>");
        out.println("<td>"+rst.getString("User_email")+"</td>");
        out.println("<td>"+rst.getInt("userLogCount")+"</td>");
        out.println("</tr>");
               }
        //关闭连接、释放资源
        rst.close();
        stmt.close();
        con.close();
        %>    
    </table>
    </body>
    </html>
    这样是正常显示的,但是如果把while(rst.next())循环中的代码写两遍变成
    while(rst.next())
        {
        out.println("<tr>");
        out.println("<td>"+rst.getString("User_id")+"</td>");
        out.println("<td>"+rst.getString("User_name")+"</td>");
        out.println("<td>"+rst.getString("User_email")+"</td>");
        out.println("<td>"+rst.getInt("userLogCount")+"</td>");
        out.println("</tr>");
                 out.println("<tr>");
        out.println("<td>"+rst.getString("User_id")+"</td>");
        out.println("<td>"+rst.getString("User_name")+"</td>");
        out.println("<td>"+rst.getString("User_email")+"</td>");
        out.println("<td>"+rst.getInt("userLogCount")+"</td>");
        out.println("</tr>");
         }
    则报告错误:javax.servlet.ServletException: [Microsoft][SQLServer JDBC Driver]ResultSet can not re-read row data for column 1.
    但是奇怪的是我用另外的一个数据库的时候他确是好的。
      

  3.   

    呵呵,我自己发现了问题。我的数据库列很多二十多行,因为查询的时候用的是
    select * from  结果就出现了上面的问题,我把*改成需要的列以后问题消失。呵呵。谢谢各位的支持。