我有一個字符串數組,其中包含500個股票的名稱。現在我在我的mysql數據庫中有一張表,裏面保存着1000多個股票的符號,並帶有它們的名字。我想要做的是從我擁有的表格中檢索這500個股票的符號。我試了下面的代碼從jdbc檢索數據
Class.forName("com.mysql.jdbc.Driver");
Connection conn=DriverManager.getConnection("jdbc:mysql//localhost/mydatabase","user","pass");
PreparedStatement stmt = conn.prepareStatement("SELECT (NAME) FROM stocks1 WHERE FULLNAME =?");
for(int i1=0;i1<i;i1++)
{
stmt.setString(1, name[i1]);
stmt.addBatch();
}
ResultSet t=stmt.executeQuery();
while(t.next())
System.out.println(t.getString("NAME"));
但它不工作。沒有打印。我想我在stmt.addBatch()中犯了一個錯誤。此外,如果我想要名稱[i1]由一個通配符(%)作爲後綴,我會如何做到這一點。
批處理是針對DML狀態,而不是查詢。您需要爲每個要檢索的ID運行SELECT,或者使用'WHERE IN(...)'(它不能在準備的語句中使用) – 2012-03-27 11:33:46
請參閱http://stackoverflow.com/questions/7899543/in -java-can-preparedstatement-addbatch-be-used-for-select-queries – 2012-03-27 11:41:12
@ Riddhish.Chaudhari-對上述問題的答案中的鏈接似乎有一些錯誤。@ ahorsewithnoname, - 所以我必須把將語句選擇到for循環並運行它。 – user1092042 2012-03-27 11:45:57