java - 如何将 ArrayList 绑定(bind)到 Oracle 中的 PreparedStatement?

标签 java oracle jdbc arraylist prepared-statement

我想知道是否有一种方法可以将 ArrayList(或任何类型的列表)绑定(bind)到最终将用于访问 Oracle 数据库的 PreparedStatement。我发现:

PreparedStatement IN clause alternatives?

这似乎与我的问题相似,但这个问题更具体:我想将一个 ArrayList 绑定(bind)到一个 PreparedStatement 以便在 Oracle 中使用,如果可能的话,这是如何完成的?

最佳答案

您不能将列表绑定(bind)到准备好的语句中的单个参数。

为列表中的每个元素生成带有参数标记的SQL,例如:

SELECT NAME FROM ITEM WHERE ID IN (?, ?, ?, ?)

即使您将为每个查询生成一个新语句,我仍然建议使用 PreparedStatement。如果您的列表包含 String 实例,您将获得必要的转义以防止 SQL 注入(inject)。

但即使它是安全类型,如 Integer 对象,一些驱动程序或中间件也可以缓存 PreparedStatements,并在请求相同表单时返回缓存的实例。当然,一些测试是必要的。如果您的列表大小差异很大,您将有许多不同的语句,而实现不当的缓存可能无法处理如此多的语句。

关于java - 如何将 ArrayList 绑定(bind)到 Oracle 中的 PreparedStatement?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/303218/

相关文章:

java - JDBC 不需要的语句关闭

java - Spring Rest Service根据逻辑返回不同的媒体类型

java - Java 中 PHP 的 $_SERVER ['DOCUMENT_ROOT' ] 的等价物是什么

mysql - 将 Oracle 转换为 MySQL : Different Outputs Seen

oracle - 使用 OraOLEDB 提供商部署应用程序

java - 将Java连接到MySQL数据库

java - 使用 jdbc 的 DB2 SQL 异常代码 440

java - 如何通过检查长度和比较 Java 中的文本从数组中删除字符串?

java - 我如何使用 volley 将 json 对象发布到 Watson Studio API

linux - Oracle XE - 安装后无法登录