0

我目前正在尝试将字符串数组中的值插入到数据库中的三列中,例如将列表 1 插入到第 1 列中,依此类推。但是在循环中使用批量插入时遇到问题。这是我当前的代码,我可以收集到的唯一方法是循环遍历每个字符串数组插入值,除非有更好的方法。

PreparedStatement stmt = conn.prepareStatement("INSERT INTO Scores (Home, Score, Away) VALUES (?, ?, ?)");

    String[] List1str = new String[List1.size()];
    List1str = List1.toArray(List1str);   
    String[] List2str = new String[List2.size()];
    List2str = List2.toArray(List2str);
    String[] List3str = new String[List3.size()];
    List3str = List3.toArray(List3str);

    for (String s1 : List1str) {
        stmt.setString(1, s1);
        for (String s2 : List2str) {
            stmt.setString(2, s2);
            for (String s3 : List3str) {
                stmt.setString(3, s3);
                    stmt.addBatch();
            }
        }
    }
    stmt.executeBatch();
4

1 回答 1

1

您应该在 addBatch() 之前绑定所有字符串。目前您的 addBatch() 在最后一个嵌套循环中。

如果我们假设所有列表的大小相同,则您的代码应如下所示:

for (int i=0; i<List1.size(); i++) {
    stmt.setString(1, List1[i]);
    stmt.setString(2, List2[i]);
    stmt.setString(3, List3[i]);
    stmt.addBatch();
}
stmt.executeBatch();
于 2013-10-29T12:32:03.970 回答