通过JTable删除MySQL数据库中的选定行

时间:2013-12-14 15:29:02

标签: java mysql sql jtable sql-delete

  • tb_records = jtable name
  • 记录=我的数据库中的表名
  • 日期=我的第一栏
  • 嘿=替换我的真实密码
  • mydatabase =我的数据库名称

我的问题是,当我在JTable中突出显示一行并删除它时,它会删除所有行。我想只删除选定的行。这是我的代码:

int row = tb_records.getSelectedRow();
DefaultTableModel model= (DefaultTableModel)tb_records.getModel();

String selected = model.getValueAt(row, 0).toString();

            if (row >= 0) {

                model.removeRow(row);

                try {
                    Connection conn = (Connection) DriverManager.getConnection("jdbc:mysql://localhost:3306/mydatabase", "root", "hey");
                    PreparedStatement ps = conn.prepareStatement("delete from records where Date='"+selected+"' ");
                    ps.executeUpdate();
                }
                catch (Exception w) {
                    JOptionPane.showMessageDialog(this, "Connection Error!");
                }           
            }

这可能是什么问题?如何删除数据库中的选定行而不是所有行?

2 个答案:

答案 0 :(得分:1)

DefaultTableModel model = (DefaultTableModel) jTable.getModel();
        int row = jTable.getSelectedRow();
        String eve = jTable.getModel().getValueAt(row, 0).

        String delRow = "delete from user where id="+eve;
        try {
            ps = myCon.getConnection().prepareStatement(delRow);
            ps.execute();
            JOptionPane.showMessageDialog(null, "Congratulation !!");
        } catch (Exception e) {
            JOptionPane.showMessageDialog(null,  e.getMessage());
        }

答案 1 :(得分:0)

1)不要显示自己的消息。显示异常中的错误消息,因为它可以更好地解释问题所在。

2)为SQL使用适当的PreparedStatement。您不太可能发生语法错误。类似的东西:

String sql = "delete from records where Date= ?";
PreparedStatement stmt = connection.prepareStatement(sql);
stmt.setString( 1, selected );
stmt.executeUpdate();

我对SQL知之甚少,但是你可能需要传递Date对象而不是String对象,因为你的where子句使用了Date?