java - 如何在一个PrepareStatement (sqlite) 中使用Array 或List<>

标签 java sql sqlite

我尝试了很多时间来解决这个问题,所以感谢您的帮助。 如何在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/

相关文章:

java - 如何在Java中将一串含有不同数量空格的数字转换为一系列Int变量。

Java反射和OOM错误

sql - 基础表更改(新列)时如何自动重新定义 View ?

mysql auto_increment 列递增一个随机值

Mysql:取决于不同事件的表的值总和

c# - Windows Phone 7.1 使用 sql-net 和 C# Sqlite 组合的 "ref"与 "out"关键字错误

Java8 : How to get the internal Type of java. util.Optional 类?

java - 使用 JSP/Servlet 递增/递减值

python - 在 Django 中使用 ManyToManyFields()

java - 编译时 SQLite 语法错误 : INSERT INTO