gpt4 book ai didi

java - 如何从DB和JTable中删除选定的行?

转载 作者:行者123 更新时间:2023-11-29 07:00:21 26 4
gpt4 key购买 nike

在此代码中,它只是从 JTable 中删除行,我想从数据库中删除当运行它时,它会从 JTable 中删除并出现错误:java.lang.ArrayIndexOutOfBoundsException: 2 >= 2 但不从数据库中删除如何解决这个问题?

    private final JPanel panel_09 = new JPanel();
JScrollPane scrollPane_09 = new JScrollPane();
final DefaultTableModel TableModel09 = new DefaultTableModel(new String[]{"Picture", "Item", "Price", "After Discount"}, 0);
final JTable table_09 = new JTable(TableModel09);
JButton btnNewButton_09 = new JButton("Delete Item");

btnNewButton_09.addActionListener ( new ActionListener() {


public void actionPerformed(ActionEvent arg0) {
try {
int selectedPlanet = table_09.getSelectedRow();
TableModel09.removeRow((int) selectedPlanet);
Object desc = table_09.getModel().getValueAt(selectedPlanet, 4);
Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/login", "root", "123");
String query = "delete from flyer_item where discount=desc";
java.sql.PreparedStatement ps = conn.prepareStatement(query);
ps.setString(1, (String) desc);
ps.executeUpdate();

} catch (Exception ex) {
System.err.println(ex);
}

}
}
);

最佳答案

在获得 desc 之前,您已从模型中删除了对象:

int selectedPlanet = table_09.getSelectedRow();//<<--this will equal 2

TableModel09.removeRow((int) selectedPlanet);//<<----remove 2

那么现在

Object desc = table_09.getModel().getValueAt(selectedPlanet, 4);
//when you try to `getValueAt(2,4)` you get this error
//"java.lang.ArrayIndexOutOfBoundsException: 2 >= 2"

为了避免此问题,您必须在删除行之前获取对象:

int selectedPlanet = table_09.getSelectedRow();
Object desc = table_09.getModel().getValueAt(selectedPlanet, 4);
TableModel09.removeRow((int) selectedPlanet);
<小时/>

然后,你会得到另一个 SQL 错误,因为要将参数设置为PreparedStatement,你必须使用 ? :

String query="delete from flyer_item where discount = ?";
//----------------------------------------------------^
java.sql.PreparedStatement ps = conn.prepareStatement(query);
ps.setString(1,(String) desc);

关于java - 如何从DB和JTable中删除选定的行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43711046/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com