Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/327.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何删除JTable和mysql中的行_Java_Swing_Jtable - Fatal编程技术网

Java 如何删除JTable和mysql中的行

Java 如何删除JTable和mysql中的行,java,swing,jtable,Java,Swing,Jtable,Java代码 int dialogDelete=JOptionPane.showConfirmDialog(null,"Are you sure you want to delete this Personnel?", "DELETE PERSONNEL",JOptionPane.YES_NO_OPTION); if(dialogDelete==JOptionPane.YES_OPTION){ DefaultTableModel

Java代码

int dialogDelete=JOptionPane.showConfirmDialog(null,"Are you sure you want to delete this Personnel?", "DELETE PERSONNEL",JOptionPane.YES_NO_OPTION);
            if(dialogDelete==JOptionPane.YES_OPTION){      
                DefaultTableModel model = (DefaultTableModel)tbl_personnel.getModel();
                int row = tbl_personnel.getSelectedRow();



                String url = "jdbc:mysql://localhost/mypos";
                String username = "root";
                String password = "";

            try {
                Connection connection = DriverManager.getConnection(url,username,password);
                System.out.println("database connected");
                stmt = connection.createStatement();

                stmt.execute("DELETE FROM Personnel WHERE Id ="+row+"");         
            } catch(Exception e) {
                throw new IllegalStateException("cannot",e);
            }      

                int modelRow = tbl_personnel.convertRowIndexToModel( row );
                model.removeRow( modelRow );


            }
我已经编辑了代码。我现在可以删除JTable中的行,也可以删除mysql中的行,但是JTable中删除的行不是mysql中删除的行。我不知道怎么了

当我单击JTable上的一行,然后按下delete按钮时,我想知道如何从JTable中删除一行

你不需要鼠标听器。默认情况下,将选择该行

您也不会在按钮上使用鼠标听筒。相反,您需要在“删除行”按钮中添加一个
ActionListner

您可能正在使用DefaultTableModel,因此可以使用模型的
removeRow(…)
方法从表中删除行

ActionListener中的基本代码如下:

DefaultTableModel model = (DefaultTableModel)table.getModel();
int row = table.getSelectedRow();
int modelRow = table.convertRowIndexToModel( row );
model.removeRow( modelRow );
String id = table.getValueAt(row, column);
stmt.execute("DELETE FROM Personnel WHERE Id =" + id + "");       
因此,基本上,您可以获取当前显示JOptionPane的代码,如果响应为“是”,则添加上述代码

编辑:

无法使用“选定行”来控制要删除的记录。选定行表示JTable中的行位置,而不是数据库表中定义的行ID

TableModel中必须有一列表示行的ID。因此代码类似于:

DefaultTableModel model = (DefaultTableModel)table.getModel();
int row = table.getSelectedRow();
int modelRow = table.convertRowIndexToModel( row );
model.removeRow( modelRow );
String id = table.getValueAt(row, column);
stmt.execute("DELETE FROM Personnel WHERE Id =" + id + "");       
此外,最好使用PreparedStatement。您不太可能出现SQL语法错误:

String sql = "DELETE FROM Personnel WHERE Id = ?";
PreparedStatement stmt = connection.prepareStatement(sql);
stmt.setString( 1, id );
stmt.executeUpdate();
stmt.close();

这取决于TableModel谢谢。我已经编辑了我的代码。当我删除它时,我无法将它连接到mysql。它只是在表中删除,我的数据库不受影响。