繁体   English   中英

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

[英]Error with mysql JDBC driver for method createArrayOf

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

今天我有一个简单的查询

SELECT * FROM books WHERE idb IN (?)

我有这个int数组:

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

我会选择idBooks中ID为的书

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

  java.sql.SQLFeatureNotSupportedException

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

我希望我的问题不是小事:)

在此先多谢,对不起我的英语,谢谢大家!

一种可能的解决方案:

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语句将参数设置为:

pst.setString( 1, str_idBooks );

似乎 MySQL没有数组变量。可以让U尝试使用临时表代替数组变量

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

这个

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM