1
我嘗試了很多時間來解決這個問題,所以非常感謝您的幫助。 如何在預處理中使用陣列?我這樣做,就像這個例子How to use an arraylist as a prepared statement parameter但它返回我的錯誤,我的代碼:如何在一個PrepareStatement中使用Array或List <>(sqlite)
//initialize
ResultSet rs2;
connection2 = sqliteConnection.dbConnector();
PreparedStatement statement2=connection2.prepareStatement("SELECT surname FROM users where id IN (?)");
//like in the example linked, but it did not work:
Array array = connection2.createArrayOf("VARCHAR", new Object[]{"1", "2"});
statement2.setArray(1, array);
rs2=statement2.executeQuery();
//to keep data from resultset, it works fine
List<String> rsDATA = new ArrayList<String>();
while(rs2.next()){
rsDATA.add(rs2.getString("surname"));
}
for(int i = 0; i < rsDATA.size(); i++) {
System.out.println(rsDATA.get(i));
}
connection.close();
但返回錯誤:
Exception in thread "AWT-EventQueue-0" java.lang.AbstractMethodError: org.sqlite.SQLiteConnection.createArrayOf(Ljava/lang/String;[Ljava/lang/Object;)Ljava/sql/Array;
at lines:
1)Array array = connection2.createArrayOf("VARCHAR", new Object[]{"1", "2"});
2(executeQuery();
這是非常重要的,我要解決這個問題。謝謝了很多..
我這樣做就像你提示我,但正如你可以看到它仍然返回錯誤,它如何可以改變?我能用它做什麼? – arkani
@arkani您的sqlite JDBC驅動程序可能已過時,請參閱http://stackoverflow.com/questions/16408591/java-lang-abstractmethoderror-org-sqlite-conn-createarrayof-error-while-calling。但正如在答案中指出的,sqlite可能沒有'java.sql.Array'實現。 – wero
它的確如此,sqlite沒有java.sql.Array實現。那麼還有其他辦法可以做到嗎?這是一個很大的項目,我不能更改jdbc .. 可以通過一些循環來完成語句以跳過數組問題嗎? – arkani