Jdbc 将值数组设置为SQL查询
我使用的是JDBC,我必须将值数组设置为一列, 我知道它在Hibernate和Ibatis中工作,但要让它在纯JDBCSQL中工作似乎很困难 我有一个字符串值数组Jdbc 将值数组设置为SQL查询,jdbc,Jdbc,我使用的是JDBC,我必须将值数组设置为一列, 我知道它在Hibernate和Ibatis中工作,但要让它在纯JDBCSQL中工作似乎很困难 我有一个字符串值数组 names[] = new String[]{"A","B","C"}; 还有一个类似于 select * from emp where name in(?) 我尝试了pstmt.setObject(1,名称),但它不起作用。纯JDBC不支持这一点。您必须生成一个查询,以便在子句中为数组的每个元素包含一个占位符 Spring的JD
names[] = new String[]{"A","B","C"};
还有一个类似于
select * from emp where name in(?)
我尝试了pstmt.setObject(1,名称),但它不起作用。纯JDBC不支持这一点。您必须生成一个查询,以便在子句中为数组的每个元素包含一个占位符
Spring的JDBC助手类支持命名参数和您想要做的事情。纯JDBC不支持这一点。您必须生成一个查询,以便在子句中为数组的每个元素包含一个占位符
Spring的JDBC helper类支持命名参数和您要执行的操作。这将使用以下语法:
"SELECT * FROM emp WHERE name IN ( SELECT column_value FROM TABLE( ? ) )"
pmst.setArray( 1, conn.createArrayOf( "VARCHAR", names ) );
这将使用以下语法:
"SELECT * FROM emp WHERE name IN ( SELECT column_value FROM TABLE( ? ) )"
pmst.setArray( 1, conn.createArrayOf( "VARCHAR", names ) );
如果您动态创建查询字符串并为数组中的每个项添加?s,然后将其中的每个项绑定到您的查询,您可能会到达该位置。如果您动态创建查询字符串并为数组中的每个项添加?s,您可能会到达该位置,然后将它们中的每一个绑定到您的查询中。我认为JDBC现在支持它-请参阅我的答案!我想现在JDBC支持它了——看看我的答案!请注意,
createArrayOf
可能无法跨所有主要关系数据库工作。请参阅:有几种技巧可以让它与其他供应商一起使用,但这是一个麻烦,您需要为每个DBMS提供一个单独的案例……请注意,createArrayOf
可能无法在所有主要的关系数据库中使用。请参阅:有几个技巧可以让它与其他供应商一起工作,但这是一个麻烦,您需要为每个DBMS提供一个单独的案例。。。