猿问

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

我有一个带列的 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 ),它会正常工作。


互换的青春
浏览 142回答 1
1回答

DIEA

我不知道如何使用可以根据每个 jTable 行中 itemCode 的值更改的 where 参数 ( itemCode )。我不明白这种混乱。您可以以与为“ItemCount”指定参数相同的方式指定参数:String SQLupdate = "UPDATE tableItem SET ItemCount= ? WHERE ItemCode = ?";ps = con.prepareStatement(SQLupdate);for(int row=0; row<rows; row++)&nbsp;{&nbsp; &nbsp; String itemCode = (String)tabelDetailDO.getValueAt(row, 0);&nbsp; &nbsp; itemCount = (int) tabelDetailDO.getValueAt(row, 2);&nbsp; &nbsp; addItemCount = (int) tabelDetailDO.getValueAt(row, 3);&nbsp; &nbsp; totalItemCount = itemCount + addItemCount;&nbsp; &nbsp; ps.setInt(1, totalItemCount);&nbsp; &nbsp; ps.setString(2, itemCode);&nbsp; &nbsp; ps.addBatch();}请注意,我从未使用过批处理更新,因此首先尝试在没有批处理的情况下使逻辑正常工作,因此您每次都需要在循环中执行更新。是的,我知道它效率不高,但您只是在测试 SQL。然后当它起作用时,您尝试使用批量更新。
随时随地看视频慕课网APP

相关分类

Java
我要回答