JSP SQL SERVER ResultSet始终返回空

时间:2019-05-19 18:25:01

标签: sql sql-server jsp

我正在对SQL Server数据库进行两个查询,第一个查询返回带有数据的结果集,但是第二个查询始终返回结果集为空。如果我在SQL SERVER中执行查询,则效果很好。我试图进行另一个查询:SELECT TOP 10 * FROM TABLE,并且始终返回空。

 <%
    String url,ssql;
    int i,j,k;
    int reg[]=new int[256];
    try{
        Class.forName("com.microsofto.sqlserver.jdbc.SQLServerDriver");
        url="jdbc:sqlserver://localhost/;databaseName=acsc;user=user;password=1234";
        Connection conn = DriverManager.getConnection(url);
        Statement stc = conn.createStatement();
        ssql="SELECT Nombre,max(Registro) FROM Tabla Group by Nombre order by Nombre";
        ResultSet rsc= stc.executeQuery(ssql);
        i=1;
        while(rsc.next()){
            reg[i]=rsc.getInt(2);
            i++;
        }
        j=0;
        do{
            //ssql="SELECT * FROM Tabla Where     Registro="+String.valueOf(reg[j]);
            ssql="SELECT TOP 10 * FROM Tabla";
            rsc= stc.executeQuery(ssql);
            if(!(rsc.getRow()==0)){
                out.println(rsc.getString(1)+" "+rsc.getString(2)+" "+rsc.getString(3));    
            }else{
                out.println("vacio");
            }
            j++;
        }while(j<i);
    }catch(SQLException se){
        out.println(se.toString()); 
    }
%>

2 个答案:

答案 0 :(得分:2)

您的代码有两个问题。您需要修复的唯一一个问题是您没有在SQL查询中使用参数。见

public static void executeStatement(Connection con) {
    try(PreparedStatement pstmt = con.prepareStatement("SELECT LastName, FirstName FROM Person.Contact WHERE LastName = ?");) {
        pstmt.setString(1, "Smith");
        ResultSet rs = pstmt.executeQuery();

        while (rs.next()) {
            System.out.println(rs.getString("LastName") + ", " + rs.getString("FirstName"));
        }
    }
    // Handle any errors that may have occurred.
    catch (SQLException e) {
        e.printStackTrace();
    }
}

Using an SQL Statement with Parameters

答案 1 :(得分:0)

感谢您的回复,也很抱歉以前没有回复。 我尝试使用prepareStatement,但是ResultSet始终返回空。 我终于找到了问题所在,如果!(Rsc.getRow()== 0))始终返回0,即使ResulSet有记录也是如此。 我已经删除了程序的那部分,并将其放置在rsc.next()中,并且它可以正常工作。 我的代码有第二个问题? 谢谢问候