为了账号安全,请及时绑定邮箱和手机立即绑定

使用来自 jtable 单元格的 where 参数更新 mysql 表

使用来自 jtable 单元格的 where 参数更新 mysql 表

互换的青春 2021-10-28 16:00:13
我有一个带列的 MySQL 表(itemCode、itemCount),我有一个带列的 jTable(itemCode、itemCount、AddItemCount)我想用 jTable 上的数据更新 MySQL 表 itemCount,但我不知道如何使用可以根据每个 jTable 行中 itemCode 的值更改的 where 参数 ( itemCode )。换句话说,我想将数据库表 itemCode 与每行中的 jTable itemCode 匹配,然后更新匹配 itemCode 的 itemCount。我尝试过的(绝对不起作用):    int itemCount, addItemCount, totalItemCount;     try {        Class.forName("com.mysql.jdbc.Driver").newInstance();        con.setAutoCommit(false);        int rows = tabelDetailDO.getRowCount();        for(int row=0; row<rows; row++) {            String SQLupdate = "UPDATE tableItem SET ItemCount=? WHERE ItemCode = '"+(String) tabelDetailDO.getValueAt(row, 0)+"' ";            ps = con.prepareStatement(SQLupdate);            itemCount = (int) tabelDetailDO.getValueAt(row, 2);            addItemCount = (int) tabelDetailDO.getValueAt(row, 3);            totalItemCount = itemCount + addItemCount;            ps.setInt(1, totalItemCount);            ps.addBatch();         }        ps.executeBatch();        con.commit();                }    catch (Exception e) {        JOptionPane.showMessageDialog(rootPane, e);                } 如果我把 SQL 命令放在 for 循环之外,它不会得到需要作为参数的“行”,而如果我将 SQL 命令放在 for 循环中,它只会更新最后一行,因为命令只会在每个循环中不断重复。如果 where 参数只取一个值(例如来自 jtextfield ),它会正常工作。
查看完整描述

1 回答

?
DIEA

TA贡献1820条经验 获得超2个赞

我不知道如何使用可以根据每个 jTable 行中 itemCode 的值更改的 where 参数 ( itemCode )。


我不明白这种混乱。您可以以与为“ItemCount”指定参数相同的方式指定参数:


String SQLupdate = "UPDATE tableItem SET ItemCount= ? WHERE ItemCode = ?";

ps = con.prepareStatement(SQLupdate);


for(int row=0; row<rows; row++) 

{

    String itemCode = (String)tabelDetailDO.getValueAt(row, 0);

    itemCount = (int) tabelDetailDO.getValueAt(row, 2);

    addItemCount = (int) tabelDetailDO.getValueAt(row, 3);

    totalItemCount = itemCount + addItemCount;

    ps.setInt(1, totalItemCount);

    ps.setString(2, itemCode);

    ps.addBatch();

}

请注意,我从未使用过批处理更新,因此首先尝试在没有批处理的情况下使逻辑正常工作,因此您每次都需要在循环中执行更新。是的,我知道它效率不高,但您只是在测试 SQL。


然后当它起作用时,您尝试使用批量更新。


查看完整回答
反对 回复 2021-10-28
  • 1 回答
  • 0 关注
  • 141 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信