Shahrukh Ahmed
Shahrukh Ahmed

Reputation: 41

Java & SQL Server exception: The statement did not return a result set

I'm creating an insurance management system for my DBMS project in university, and I am having a problem with deleting a record from SQL Server. It throws an exception:

SqlException: com.microsoft.sqlserver.jdbc.SQLServerException: The statement did not return a result set.

It also successfully deleted a record from my database. Could anyone please tell me how to remove this kind of exception?

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());
}

Upvotes: 3

Views: 8444

Answers (3)

dfdsfdsfsdf
dfdsfdsfsdf

Reputation: 663

if you're executing a delete statement, why are you executing

ResultSet rs = st.executeQuery();

Here's a sample c# ado.net. concept it the same if you're using 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();   
    }

Upvotes: 0

Rick
Rick

Reputation: 61

I think you are using the wrong thing to perform the delete operation. Try using st.executeUpdate() instead of ResultSet rs = st.executeQuery() - you are executing a delete rather than something that would return a result set.

Upvotes: 4

Ricardo C
Ricardo C

Reputation: 2244

This is not a problem with SQL Server. The problem is with your code (what is that? C#? The object is set to expect a result set from the server, but the query is a DELETE statement, and those return no rows... ever.

State the programing language, and research for how to execute statement instead requesting result sets.

This line makes sense for a SELECT not for an UPDATE

 ResultSet rs = st.executeQuery();

Upvotes: 1

Related Questions