2013-10-29 22 views
0

我目前正試圖從字符串數組插入到我的數據庫中的三列中的值,例如 將1列入列1等等。但是在循環中使用批插入有問題。這是我目前的代碼,從我可以收集的唯一方法是循環每個字符串數組插入值,除非有更好的方法。JBDC批量插入不能正確地循環

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

這將幫助,如果你[編輯](http://stackoverflow.com/posts/19657984/edit )你的問題向我們展示列表中包含的內容,你的預期結果是什麼,以及當前代碼正在做什麼。 –

+0

三個列表大小不同嗎? – mauretto

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