将数据从 jtable 插入到 derby 数据库时重复条目

duplicate entries while inserting data from jtable to derby database

我编写代码将值从 jtable 插入到 derby 数据库。该代码确实以一种有趣的方式插入了值。因为我有 7 列,代码插入一个条目 7 次,第一行插入缺少一个值,第二行插入缺少 2 个值,依此类推...这是下面的代码。

try {
        Class.forName("org.apache.derby.jdbc.EmbeddedDriver");
        Connection con = DriverManager.getConnection("jdbc:derby:MTD","herbert","elsie1*#");
        pst = con.prepareStatement("Insert into APP.ASSESSOR" +
            "(EMPLOYEEID, NAME, SURNAME,ASSESSORNUMBER," +
            "UNITSTANDARDNUMBER, DESCRIPTION, CREDITS, NQFLEVEL)"+
            "values(?, ?, ?, ?, ?, ?, ?, ?)");
        TableModel tm = jTable1.getModel();
        for(int row = 0; row < tm.getRowCount(); row++){
            for(int col = 0; col < tm.getColumnCount(); col++){
                Object val = tm.getValueAt(row, col);
                pst.setObject(col+1, val);
                pst.addBatch();
            }
        }
        pst.executeBatch();
        JOptionPane.showMessageDialog(null, "Record successfully saved..!");
    }
    catch (Exception e){
        JOptionPane.showMessageDialog(null, e);
    }

我哪里错了。

您应该将 addBatch() 移动到内部 loop.first 的外侧 您应该将值设置为语句。添加所有列调用 addBatch()

for(int col = 0; col < tm.getColumnCount(); col++){
        Object val = tm.getValueAt(row, col);
        pst.setObject(col+1, val);

}
pst.addBatch();