【问题标题】:Query prepared using Prepared statement in db2 is failing在 db2 中使用 Prepared 语句准备的查询失败
【发布时间】:2015-11-26 07:32:58
【问题描述】:

我们有一个 db2 数据库 v 9.7 FP 1

我们有一个类似这样的表格:

CREATE TABLE TAB1(COL1 VARCHAR(30),...);

我们的应用程序从前端获取 col1 值并在 Java 7 中形成 PreparedStatement,如下所示:SELECT FROM TAB1 WHERE COL1 = '?'。如果来自 UI 的输入超过 30 个字符,则在执行准备好的语句时,我们会收到 DB2 错误

 Error Code: -302

但同样的语句,即 SELECT * FROM TAB1 WHERE COL1 = 'XXXXX'; (COL1 长度 > 30 个字符),如果直接从 cmd 对数据库执行,我们不会遇到任何错误。

此错误消息的可能原因是什么?

【问题讨论】:

  • 没有代码的问题会引起模糊的答案。
  • 我假设VARCAHR 的意思是VARCHAR。
  • 我很惊讶“直接执行”不会出错。
  • 1.是的,直接执行不会抛出任何错误。 2.是的,它是VARCHAR

标签: java db2 prepared-statement


【解决方案1】:

【讨论】:

  • 但它是一个选择语句,而不是一个插入/更新语句,列长度约束出现了。
  • 看起来 DB2 无法将 varchar(30) 列与超出限制的参数进行比较
【解决方案2】:

是的,没错。该列限制为 30 个字符,因此当您选择查询结果集 if > 30 时,会引发错误。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-29
    • 1970-01-01
    • 1970-01-01
    • 2010-10-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多