java - 如何根据搜索值从jtable和sql数据库中删除搜索行

标签 java mysql sql-server swing

我创建了一个 SQL 数据库,其中包含一个名为 users 的表。它保存 user_id、user_name 和 email。我创建了一个表单,允许用户搜索任何记录并在 JTable 上显示过滤后的记录。

我想删除搜索结果根据搜索值过滤的行,这意味着用户可以搜索 user_id、user_name 或电子邮件。

users {user_id, user_name, email}

这就是我所拥有的

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 搜索时删除该行。

最佳答案

用户{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);
    }
 }

使用该代码,您总是会完全删除表,因为您总是在 WHERE 子句中获得 TRUE

如果 searchTxt.getText() 是“hello”,准备好的语句将为

   DELETE from user where hello = hello

这相当于

   DELETE from user where true

或者

   DELETE from user

您只需区分 searchTxtcolumnName

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

关于java - 如何根据搜索值从jtable和sql数据库中删除搜索行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37224926/

相关文章:

java - 自定义 View 调用了 setOnTouchListener 但没有覆盖 performClick(类扩展 Activity NOT View)

java - java中给定键随机访问映射条目

java - 创建关键字过滤器的最快方法?

mysql - 使用yii框架在mysql中存储日期时间

mysql - INET_ATON - mysql 查询到 ms-sql 查询

sql-server - 指定数据库名称与前一年

java - 为 Simian Ant 任务设置忽略 block 注释

mysql - 将 csv 加载到 mysql 选择列

MySQL : Combinging Aggregate function with Date Time function in a join

sql-server - 对所有值进行分组和乘法?