我是一个初学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”方法,还有其他解决办法吗?
我希望我的问题不是微不足道的:)
非常感谢,对不起我的英语谢谢大家!
答案 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)