【问题标题】:PreparedStatement with variable number of params yet without iterating on them [duplicate]PreparedStatement 具有可变数量的参数但没有对其进行迭代[重复]
【发布时间】:2016-11-15 02:48:25
【问题描述】:

我正在寻找以下方面的验证:

使用未知数量参数的PreparedStatement 的方式是this question 中所示的方式,并且在Java/应用程序端没有办法绕过这种迭代。

我一直在寻找一种“可变参数”类型的方法和语法,以将可变数量的参数输入PreparedStatement,例如在集合中,并将其作为单个变量占位符插入到查询中。

不是问题。寻找验证只是为了不错过。

【问题讨论】:

  • 问题是什么?
  • @4castle 在 jdbc 中使用此功能并不难。也许未来的版本会这样做。
  • @4castle 这构成了我的回答。写下来,我会接受的。
  • @user6401178 我在想……我不完全确定您的问题是什么或合适的答案是什么。我已将我的 cmets 移至答案。
  • 答案已经说明了如何解决,因此我已经关闭是重复的。我还建议您使用完整的单词(question 代替 Q,answer 代替 ans,available 代替avail),它使交流比随机的文字缩写更清晰。

标签: java sql jdbc prepared-statement


【解决方案1】:

如果您想拥有不同的参数,您将无法使用PreparedStatement。 SQL 字符串必须有正确数量的问号。这就是为什么解决方法是先迭代并添加问号,然后从该动态字符串创建PreparedStatement

使用PreparedStatement 的部分动机是为了避免 SQL 注入。 PreparedStatement 就像与数据库的合同,只有 this 的许多参数带有 this SQL 语句。如果参数可以更改,它将破坏该合同,并且数据库将不再知道要准备什么。

【讨论】:

    猜你喜欢
    • 2023-03-17
    • 2011-12-24
    • 2011-07-14
    • 2013-05-21
    • 2021-10-07
    • 2017-06-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多