2013-10-25 2 views
0

현재 HTML 페이지에서 일부 점수를 긁어내어 SQL 데이터베이스에 입력하고 있습니다. Jsoup를 사용하여 ArrayList에 점수를 파싱합니다. 여기에서 ArrayList를 String으로 변환하여 db의 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 예, 일괄 업데이트 사용에 대한 의미를 알고 있습니다. 비록 내가 여기에 그것을 어떻게 구현할 것인지는 조금 확실하지 않지만. 한 행에 대해 일괄 처리에 모든 값을 추가해야하므로 실행되고 다음 행으로 이동합니다. 나는 3 개의 분리 된 for 루프를 가짐으로써 그것을 코딩하는 것에 대해 생각했지만, 결국 addBatch는 executeBatch가 될 것이지만 작동하지 않는 것 같다. 내가 제대로 이해하지 않는 한. –

답변

-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(); 
} 
관련 문제