2013-10-25 79 views
0

我目前正在從HTML頁面中取出一些分數,然後將它們輸入到SQL數據庫中。 正在使用Jsoup將分數分析到ArrayList中。從這裏我將ArrayList轉換爲一個字符串,以便將其解析爲數據庫中的VARCHAR字段。雖然我似乎無法解決如何編輯for循環,但我必須一次插入所有值。使用for循環將多個字符串添加到SQL數據庫

這裏是我當前的代碼:

Document doc = Jsoup.connect(URL).timeout(5000).get(); 

    for (Element table : doc.select("table:first-of-type")) //selects first table 
    { 
     for (Element row : table.select("tr:gt(0)")) { //selects first table cell 
      Elements tds = row.select("td");//selects row 

      List1.add(tds.get(0).text()); 
      List2.add(tds.get(1).text()); 
      List3.add(tds.get(2).text()); 
     } 
    } 
    PreparedStatement stmt = conn.prepareStatement("INSERT INTO Scores (Home, Score, Away) VALUES (?,?,?)"); 

    String[] List1str = new String[List1.size()]; 
    List1str = List1.toArray(List1str); 

    for (String s : List1str) { 
     stmt.setString(1, s); 
     stmt.setString(2, "test"); 
     stmt.setString(3, "test"); 
     stmt.executeUpdate(); 

    } 
+0

何不乾脆做List1Str.get(指數)?爲什麼循環?另一個問題,java命名約定,標識符名稱以小寫字母開頭。 – kosa

+1

嘗試使用jdbc batchUpdate。 http://stackoverflow.com/questions/14264953/how-is-jdbc-batch-update-helpful – Saurin

+0

@Saurin是的,我明白你的意思是使用批量更新。儘管我有點不確定我會如何在這裏實現它。因爲我需要將所有值添加到批處理中的一行,然後執行,然後移動到下一行。我曾考慮過編寫它有三個單獨的for循環,但它會addBatch然後在最後會執行批處理,但它似乎並沒有工作。除非我沒有正確理解它。 –

回答

-1
for (int i = 0; i < dtm.getRowCount(); i++) { 
    for (int j = 0; j < dtm.getColumnCount(); j++) { 
     Object o = dtm.getValueAt(i, j); 
     System.out.println("object from table is : " + o); 
     pst.setString(j + 1, (String) o); 
    } 
    pst.executeUpdate(); 
    pst.clearParameters(); 
} 
相關問題