【发布时间】:2009-08-29 05:58:58
【问题描述】:
如何在准备好的语句中处理数组?即,我想做一个查询,我得到的参数之一是我想在查询中使用的字符串数组(不要选择数组中包含字段的行)?
【问题讨论】:
标签: java sql database arrays prepared-statement
如何在准备好的语句中处理数组?即,我想做一个查询,我得到的参数之一是我想在查询中使用的字符串数组(不要选择数组中包含字段的行)?
【问题讨论】:
标签: java sql database arrays prepared-statement
一些 JDBC 驱动程序可能已经(在 JDBC 4 之前)包含专有扩展,这些扩展支持准备好的语句中的数组类型参数 - 您需要为此咨询 API。这意味着您必须在 SQL 中使用和操作类似数组的类型。
一种解决方法是使用临时表。这些是此类解决方案的元步骤:
示例:IN 表达式被替换为 JOIN 到临时表。
【讨论】:
现在这可能对您没有帮助,但我了解到 JDBC 4 将支持 2003 版 SQL 中定义的数组类型。
【讨论】:
这在很大程度上取决于所使用的 RDBMS。通常可以使用供应商的 jdbc 驱动程序扩展来完成此类功能。
我发现的 2 个变体是(对于 Oracle): http://blogs.itemis.de/kloss/2009/03/05/arrays-preparedstatements-jdbc-and-oracle/
http://www.angelfire.com/home/jasonvogel/java_jdbc_arrays.html
试试看能不能帮到你。
【讨论】: