2016-05-14 12 views
0

私は、usersというテーブルを持つsqlデータベースを作成しました。 user_id、user_name、およびemailを保持します。ユーザーが任意のレコードを検索できるようにフォームを作成し、フィルタリングされたレコードをJTableに表示します。検索された値に基づいてjtableとsqlデータベースから検索された行を削除する方法

ユーザーがuser_id、user_nameまたはemailのいずれかを検索できるという意味で、検索結果のフィルタを検索値の行に基づいて削除します。

ユーザー{user_idは、USER_NAME、電子メール}

これは私が

private void deleteSelectedRows(){ 
    try { 
     String sql = "DELETE from user where ? = ?"; 
     pst = conn.prepareStatement(sql); 
     pst.setString(1, searchTxt.getText()); 
     pst.setString(2, searchTxt.getText()); 
     ((DefaultTableModel)userTable.getModel()).removeRow(userTable.getSelectedRow()); 

     pst.execute(); 

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

searchTxtがテキストフィールドである持っているものです。 このコードは、テーブル内のすべての行を削除します。

DELETE from user where user_id = ?に変更すると、user_idで検索された行だけが削除されます。

答えて

1

ユーザー{user_idは、USER_NAME、電子メール}このコードでは

private void deleteSelectedRows(){ 
     try { 
      String sql = "DELETE from user where ? = ?"; 
      pst = conn.prepareStatement(sql); 
      pst.setString(1, searchTxt.getText()); 
      pst.setString(2, searchTxt.getText()); 

     ((DefaultTableModel) userTable.getModel()).removeRow(userTable.getSelectedRow()); 

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

searchTxt.getText()がある場合は、常にあなたのWHERE句

TRUEを得るので、あなたは常にテーブルの完全な削除を生産しています「こんにちは」、プリペアドステートメントは

と同等です

DELETE from user where hello = hello 

になりますあなただけの

+0

private void deleteSelectedRows(){ try { String sql = "DELETE from user where ? = ?"; pst = conn.prepareStatement(sql); pst.setString(1, columnName); pst.setString(2, searchTxt.getText()); ((DefaultTableModel) userTable.getModel()).removeRow(userTable.getSelectedRow()); pst.execute(); } catch (Exception e){ JOptionPane.showMessageDialog(null, e); } } 

searchTxt間とcolumnNameを区別する必要が
DELETE from user where true 

それとも

DELETE from user 

ありがとうございました。それは素晴らしい説明でした。複数の列が関係しているので複数の列名を使用しますか? –

+0

@TLinただし、columnNameごとに1つずつ異なるsearchTxtも使用する必要があり、すべてのフィールドが検索に使用されていない場合は、クエリをdinamically構成する必要があります。それが有用であれば、答えを受け入れたものにすることがとても親切である。 – RubioRic

+1

私はコンボボックスを使用し、コンボボックスから選択した値に基づいて検索を修正しました。ありがとう、あなたの承認は途中です! –

関連する問題