2016-04-14 45 views
1

我正在爲大學中的DBMS項目創建保險管理系統,並且在從SQL Server中刪除記錄時遇到問題。它引發一個異常:Java&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()); 
} 

回答

1

我認爲你使用錯誤的東西來執行刪除操作。 嘗試使用st.executeUpdate()而不是ResultSet rs = st.executeQuery() - 您正在執行刪除而不是返回結果集的內容。

+0

正是! =)這是真正的答案。 –

1

這不是SQL Server的問題。問題出在你的代碼上(這是什麼?C#?該對象被設置爲期望從服務器得到結果集,但查詢是DELETE語句,並且那些不返回行......永遠不會返回。編程語言,以及研究如何執行語句,而不是請求的結果集。

這條線使一個SELECT感不是一個UPDATE

ResultSet rs = st.executeQuery(); 
0

,如果你執行一個delete語句,你爲什麼執行

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