2012-03-19 54 views
1

我的GUI上有一個jtable。 (tableRealProperty)。我需要添加,刪除和更新表中的數據。這些數據來自一個數據庫,它有一個名爲ClientID的主鍵。 jtable中的列是「位置」和「區域」。 如果我從jtable中選擇一個特定的行,它當然應該從數據庫中刪除。我的問題是,當我點擊我的刪除按鈕,而不是隻對選定的行被刪除,但如何在刪除jtable的選定行時寫入sql查詢?

也全部特定客戶的表裏面的數據。這裏是我的刪除代碼:

private void cmdDelRPropActionPerformed(java.awt.event.ActionEvent evt) {            
String sql = "delete FROM tblrealProperty where tblrealproperty.ClientID = ?"; 

    try { 
    pst = conn.prepareStatement(sql); 
    pst.setString(1, txtClientID.getText()); 
    ((DefaultTableModel)tableRealProperty.getModel()).removeRow(tableRealProperty.getSelectedRow()); 
    pst.execute(); 
    JOptionPane.showMessageDialog(null, "Deleted"); 


    } catch (Exception e) { 
     e.printStackTrace(); 
     JOptionPane.showMessageDialog(null, e); 
    } 

} 
+0

爲什麼你的表名是'tblrealProperty'並且where子句中的表名是'tblRealProperty'(大寫R)是否有原因? – 2012-03-19 12:57:57

+0

它是一樣的。 – zairahCS 2012-03-19 13:00:19

回答

1

如果我從jtable中選擇某一行,當然應該將其從數據庫中刪除爲 。我的問題是,當我點擊我的 刪除按鈕,不是隻對選定的行被刪除,但也都 ,某些客戶端的表裏面的數據..

這聽起來像是你有一個外鍵在級聯刪除的客戶端表上設置tblrealproperty。這意味着,如果客戶端從tblrealproperty中刪除,那麼所有與指向tblrealproperty中刪除行的外鍵相關的數據也會被刪除。這是DB內部防止不確定性的一種方式。

+0

我將它設置爲ON DELETE:restrict,但表中的所有行都被刪除。 – zairahCS 2012-03-19 13:15:34

+0

我們是在談論一張桌子還是多張桌子?當你刪除該行時,你的意思是它會刪除該表中的那一行,或者在其他地方的表中刪除更多的表? – 2012-03-19 13:20:10

+0

只有一張桌子。感謝關於外鍵的想法..它幫助...謝謝:) – zairahCS 2012-03-19 13:27:45

1

此查詢將明確刪除具有特定ClientID的所有行。你必須在數據庫中添加另一列到列表「索引」中,這對於表中的每一行都是唯一的。然後用這個索引中刪除該行:

`delete FROM tblrealProperty where tblrealproperty.index = ?` 
+0

我做了你給我的代碼,但它所選擇的行只在GUI上被刪除,但在數據庫中沒有。當我刷新gui時,應該被刪除的行仍然存在 – zairahCS 2012-03-19 13:33:43

+0

我該怎麼做? – zairahCS 2012-03-19 13:52:01

0

對我來說完美的作品,不要忘記檢查,如果txtClientIDindex和你的數據庫autoincrement。如果您的表格有類似的txtClientID,那麼您的刪除命令會執行刪除所有具有相同txtClientID的行。