我尝试了很多时间来解决这个问题,所以感谢您的帮助。 如何在prepare语句中使用数组?我在这个例子中这样做 How to use an arraylist as a prepared statement parameter但它返回错误,我的代码:
//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();
解决这个问题对我来说非常重要。非常感谢..
最佳答案
您需要在 WHERE
子句中使用 IN
:
SELECT surname FROM users WHERE id IN (?)
和一个 java.sql.Array
对象,如链接问题的答案所示。
关于java - 如何在一个PrepareStatement (sqlite) 中使用Array 或List<>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36469857/