【问题标题】:How do I declare a String array in a Java SQL declareParameter call?如何在 Java SQL declareParameter 调用中声明字符串数组?
【发布时间】:2011-08-05 18:02:51
【问题描述】:

为说明目的而简化:

String[] filter = {"foo", "bar"};
String sql = "SELECT * FROM table WHERE column IN ?";
declareParameter(new SqlParameter(Types.ARRAY));

当我执行它时这不起作用(我得到一个java.sql.SQLException: [Microsoft][SQLServer 2000 Driver for JDBC]Invalid parameter binding(s). 异常。

【问题讨论】:

    标签: java sql sql-server


    【解决方案1】:

    据我所知,JDBC 官方不支持这种查询,SQL Server 也不支持。这个话题已经在 SO 上讨论过很多次,并提出了几种解决方法:

    您可能可以找到更多,因为它确实是一个非常相关但仍然开放的话题。

    【讨论】:

      【解决方案2】:

      我不确定 MS SQL Server。但是这样的代码在 oracle DB 上不起作用。在 oracle 中,我们不能将 java 数组传递给 IN 子句。解决该限制的方法是构造一个 PL/SQL 函数,将字符串列表转换为表,类似于 stringToTable。然后将连接的字符串作为参数传递。

      同样,此答案适用于 Oracle DB;它可能无法在 MS SQL 服务器上运行。

      【讨论】:

      猜你喜欢
      • 2013-02-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-10-22
      • 2011-04-18
      • 2010-09-07
      相关资源
      最近更新 更多