JBDC批量插入未正确循环

时间:2013-10-29 12:16:39

标签: java sql jdbc insert batch-processing

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

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();

1 个答案:

答案 0 :(得分: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();