2012-03-19 24 views
1

私はGUI上にjtableを持っています。 (tableRealProperty)。テーブル内のデータを追加、削除、更新する必要があります。このデータはClientIDというプライマリキーを持つデータベースからのものです。 jtable内の列は「Location」と「Area」です。 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)の理由はありますか? –

+0

それはちょうど同じです。 – zairahCS

答えて

1
:私の問題は、私が選択した行が削除だけでなく、その特定のクライアントのテーブル内のすべてのデータだけでなく、私の[削除]ボタンをクリックすると、ことは、ここで削除のために私のコードです。..

です

jtableから特定の行を選択した場合は、当然データベースから同様に として削除する必要があります。私の問題は、あなたがに外部キーを持っているように、この音を

..私は 私の削除ボタン、選択した行が削除されるだけでなく、その特定のクライアントのテーブル内のすべての データをクリックしたときに、ということですカスケード削除を使用してクライアントテーブルに設定されたtblrealproperty。つまり、クライアントがtblrealpropertyから削除されると、tblrealpropertyの削除された行を指す外部キーを持つすべての対応するデータも削除されます。不一致を防ぐのは、DB内の味方です。

+0

私はそれをON DELETE:restrictに設定しますが、テーブルのすべての行は削除されます。 – zairahCS

+0

1つのテーブルまたは複数のテーブルについて話していますか?行を削除すると、その行の行が削除されることを意味します。 –

+0

テーブルは1つだけです。外部キーのことについて考えてくれてありがとうございました。ありがとうございました。ありがとうございます:) – zairahCS

1

このクエリは、特定のClientIDを持つすべての行を削除します。データベース内のテーブルに別の列を追加する必要があります。「インデックス」とは、テーブルの各行で一意になります。その後、このインデックスを持つ行を削除します。私にとって

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

私があなたに与えたコードはありましたが、選択した行はGUI上でのみ削除され、データベース上では削除されません。私はGUIをリフレッシュすると、行が削除されるはずですが、まだそこにあるでしょう – zairahCS

+0

どうすればいいですか? – zairahCS

0

は完璧に動作し、txtClientIDは、データベース内のautoincrementindexあるかどうかを確認することを忘れないでください。あなたのテーブルがtxtClientIDに似ている場合、あなたの削除コマンドは、同じtxtClientIDを持つすべての行の削除を実行します。

関連する問題