Java& SQL Server异常:该语句未返回结果集

时间:2016-04-14 20:01:36

标签: sql-server

我在大学里为我的DBMS项目创建了一个保险管理系统,我在从SQL Server删除记录时遇到了问题。它引发了一个例外:

  

SqlException:com.microsoft.sqlserver.jdbc.SQLServerException:该语句未返回结果集。

它还成功删除了我的数据库中的记录。谁能告诉我如何删除这种例外?

String SQL="delete  from INMS_3 where Agent_Id=? and First_Name=? and Last_Name=?  and User_Name=? and Phone_no=?";

try {  
    Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
    String connectionUrl = "jdbc:sqlserver://localhost:1433;" +
        "databaseName=INMS;user=TestingUser;password=1234;";
    Connection con = DriverManager.getConnection(connectionUrl);
    System.out.println("Connected to sql server");

    String str=jTextField1.getText();
    String str1=jTextField2.getText();
    String str2=jTextField3.getText();
    String str3=jTextField4.getText();
    String str4=jTextField5.getText();

    PreparedStatement st = con.prepareStatement(SQL);

    st.setString(1, str);
    st.setString(2,str1);
    st.setString(3,str2);
    st.setString(4,str3);
    st.setString(5, str4);

    ResultSet rs = st.executeQuery();

    if(rs.next());
    {
        JOptionPane.showMessageDialog(null,"Deleted Succesfully");
    }

    if(!rs.next())
    {
        JOptionPane.showMessageDialog(null,"Unable to delete");
    }
    else
    {
        JOptionPane.showMessageDialog(null,"Unable to delete");
    }
} catch (SQLException e) {
    System.out.println("SQL Exception: "+ e.toString());
} catch (ClassNotFoundException cE) {
    System.out.println("Class Not Found Exception: "+ cE.toString());
}

3 个答案:

答案 0 :(得分:2)

我认为你使用错误的东西来执行删除操作。 尝试使用st.executeUpdate()而不是ResultSet rs = st.executeQuery() - 您正在执行删除而不是返回结果集的内容。

答案 1 :(得分:1)

这不是SQL Server的问题。问题在于您的代码(这是什么?C#?对象设置为期望来自服务器的结果集,但查询是DELETE语句,并且那些不返回行......永远。

陈述编程语言,研究如何执行语句而不是请求结果集。

这条线对于SELECT而不是UPDATE

是有意义的
 ResultSet rs = st.executeQuery();

答案 2 :(得分:0)

如果您正在执行删除语句,为什么要执行

ResultSet rs = st.executeQuery();

以下是c#ado.net的示例。如果你使用的是java,它的概念是一样的。

    using(var conn = new SqlConnection("my connection string"))
    {
        var deleteCmd = new SqlCommand();
        deleteCmd.Connection = conn;
        deleteCmd.CommandType = CommandType.Text;
        deleteCmd.CommandText = @" 
            DELETE Accounts
            WHERE account_id  = @p_account_id 
        ";
        deleteCmd.Parameters.AddWithValue("p_account_id", 123);

        conn.Open();
        deleteCmd.ExecuteNonQuery();   
    }