方法createArrayOf的mysql JDBC驱动程序出错

时间:2014-02-27 10:53:27

标签: java mysql database sqlite jdbc

我是一个初学java程序员。在我的虚拟项目中,我使用mysql JDBC 5.17驱动程序连接到我的数据库

今天我有一个简单的查询

SELECT * FROM books WHERE idb IN (?)

我有这个int数组:

int[2] idBooks = new int{1,2};

我想在idBooks

中选择id为book的书籍

当我使用API​​“createArrayOf”时,JVM会在控制台上抛出此错误:

  java.sql.SQLFeatureNotSupportedException

我知道我的驱动程序不支持“createArrayOf”方法,还有其他解决办法吗?

我希望我的问题不是微不足道的:)

非常感谢,对不起我的英语谢谢大家!

2 个答案:

答案 0 :(得分:2)

一种可能的解决方案:

Java

// str_idBooks will be [1, 2]
String str_idBooks = Arrays.toString( idBooks );

您必须从字符串中替换'['' '(空格),']'以传递给MySQL查询。

MySQL

如果您没有如上所述替换字符,请使用以下语句:

SELECT * FROM books
 WHERE FIND_IN_SET( idb, 
                    replace(replace(replace(?,'[',''),']',''),' ','')
                  ) > 0

如果您已按上述方式更换了字符,请使用以下语句:

SELECT * FROM books
 WHERE FIND_IN_SET( idb, ? ) > 0

使用Prepared Statement将参数设置为:

pst.setString( 1, str_idBooks );

答案 1 :(得分:0)

MySQL seems MySQL没有数组变量。可能 你可以尝试临时表而不是数组变量

CREATE TEMPORARY TABLE IF NOT EXISTS my_temp_table
SELECT * FROM people WHERE last_name = 'John';

this