2010-07-25 59 views
1

我需要一次將多個記錄插入到mysql數據庫中。我正在做的是在一張桌子上的SELECT,從我的申請與準備好的陳述。我必須做的是將這些結果插入另一個臨時表中。從查詢獲得的JDBC,INSERT MULTIPLE記錄到其他表中

String sqlquery = "select * from table1 where arg1 = ?"; 
PreparedStatement statement; 
statement = con.prepareStatement(sql); 


ArrayList<String>termlist = index.getTermList(); 
for (int i = 0; i < termlist.size(); i++) 
{ 
    String search = termlist.get(i); 
    statement.setString(1,search); 

    ResultSet rs1 = statement.executeQuery(); // 
} 

這些設置可能很大。在每次迭代之後,以何種方式將此ResultSet插入到其他表中,最快的方法是什麼?

如何將此結果集傳遞給一些存儲過程,如果有方法?

回答

2

你可以讓數據庫做的工作適合你:

INSERT INTO othertable 
SELECT col1, col2 FROM table1 
WHERE arg1 = ? 

這樣你就不必數據的副本發送到已經存在那裏的數據庫。

+0

Thanx標記。天哪,這似乎很簡單沒有出現在我的腦海裏。所以我只是把它作爲準備好的聲明?如果我這樣做,是否有可能,如果我沒有與搜索字符串匹配,以某種方式繼續引用此搜索字符串? 我的意思是如果我不做ResultSet計數? – Julia 2010-07-25 07:41:05

0

如果將逗號分隔的參數值列表傳遞到存儲過程並使用IN (val1, val2, ...)子句,則可以執行單個查詢。不確定什麼MySQL的限制是IN子句的長度。

這是split的實現。

相關問題