我看過,並且一直無法找到我遇到的以下挑戰的答案。它 似乎很簡單,但我一直無法解決它。如何使用arraylist作爲準備好的語句參數
我有一個ArrayList
的記錄ID是Long
- >ArrayList<Long>
。我想用 這個記錄ID列表從另一個表中選擇行。到現在爲止還挺好。現在進入 挑戰...
a)我正在使用準備好的語句從ArrayList
輸入 爲表中選擇數據。
selectPS = dbConnection.prepareStatement("select columnA from tableA where id in ?");
上述問題 - 如何定義參數?上述內容對於 和ArrayList
類型參數似乎不正確。
b)設置 聲明的參數值時,我也遇到了問題。沒有設置ArrayList
類型值的方法,我看不到其他可行的 選項。
---> selectPS.set?????(1, arraylistParameter);
ResultSet rs = selectPS.executeQuery();
任何幫助或方向,你可以設置我非常感謝。
謝謝。
**你可以嘗試傳遞數組嗎?**,[PreparedStatement#setArray()](http://docs.oracle。com/javase/7/docs/api/java/sql/PreparedStatement.html#setArray(int,java.sql.Array))?您需要首先使用[Connection#createArrayOf()](http://docs.oracle.com/javase/7/docs/api/java/sql/Connection.html#createArrayOf(java.lang.String, java.lang.Object中[]))。列出某些方法[here](http://www.javaranch.com/journal/200510/Journal200510.jsp#a2)。 – NINCOMPOOP
我會動態地爲數組中的每個元素創建一個帶'?'的字符串,每個值調用'setLong'方法,每次增加索引。 –
@Thomas Grady CBIP你的數據庫是什麼?如果是Oracle,那麼將不會在'IN'子句中支持超過1000條記錄。您必須編寫INNER JOIN子句更多信息 - http://stackoverflow.com/questions/4722220/sql-in-clause-1000-項目限制 – Prabhaker