SQL'in(?)'子句的SqlServer PrepareStatement设置参数 [英] SqlServer PrepareStatement set parameters for SQL 'in(?)' clause

查看:429
本文介绍了SQL'in(?)'子句的SqlServer PrepareStatement设置参数的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个sql,看起来像这样:

I have a sql which looks like this:

SELECT * FROM T_TABLE WHERE ID IN(?)

我想通过PrepareStatement设置IN(?)的参数.我认为所需的方法如下所示:

I wanna to set parameters for IN(?) via PrepareStatement. I think the desired method would looked like this:

prepareStatement.setList(1,Arrays.asList("1","2","3"));

但是我不知道应该使用哪种方法来实现这一目标.

But I don't know which method should I use to achieve this.

I have tried setArray method with the help from here and I got these error messages.

java.sql.SQLFeatureNotSupportedException:
    at com.microsoft.sqlserver.jdbc.SQLServerConnection.createArrayOf(SQLServerConnection.java:2763)
    at com.newegg.ec.review.summary.dao.mssql.MSSQLReviewAccess.nextPage(MSSQLReviewAccess.java:165)

是否表示SqlService不支持createArrayOf方法?而现在,我该如何实现呢?我不喜欢这样加入sql的方式:

Does it mean that SqlService is not support createArrayOf method? And now, how can I achieve this? I don't like the way to join sql like this:

String sql = "SELECT * FROM T_TABLE WHERE ID IN("+in+")";

我的代码,

ps.setArray(1, conn.createArrayOf("VARCHAR",items.subList(1,9);

任何帮助将不胜感激.

致谢.

推荐答案

基本上,您想要执行的操作不是直接使用PreparedStatement进行.

Basically what you are wanting to do is not directlypossible using a PreparedStatement.

看看这篇精彩的文章,它显示了其他选择 http://www.javaranch.com/journal/200510/Journal200510.jsp# a2

Have a look at this wonderful article which shows other alternatives http://www.javaranch.com/journal/200510/Journal200510.jsp#a2

或者,您可以使用createQuery语句,该语句将按如下方式接受IN子句 JPQL IN子句:Java数组(或列表,集合...) ?

Alternatively you can use a createQuery statement which will accept an IN clause as per JPQL IN clause: Java-Arrays (or Lists, Sets...)?

这篇关于SQL'in(?)'子句的SqlServer PrepareStatement设置参数的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆