0

我刚刚进入 IBM DB2,我有一些相当复杂的查询要创建,这些查询将基于 Java webapp 中的用户输入。问题是,这些查询将与多个不同的参数组合在一起,可以这么说,简单地使用问号是不可能的。真的没有办法知道应该去哪里。值得庆幸的是,DB2 似乎允许命名参数,这让事情变得更加简单。我仔细阅读了一些 DB2 文档,这一切看起来都非常简单,但我一直收到一个异常,说参数标记在 SQL 字符串中不存在,而它显然存在,即 :parameter1 在 SQL 字符串中,但在 setJccStringAtName 方法中找不到“parameter1”。我已经设置了“enabledNamedParameterMarkers” 到传递给 getConnection 方法的 Properties 对象中的 DB2BaseDataSource.YES ,但无论我是否这样做似乎都没有任何区别,即使这似乎确实是这样做的方法。也许我错过了一些明显的东西。这是否也需要在服务器端启用?

4

1 回答 1

0

我认为您的问题是您混合了纯 Java 开发和 SLQJ 的一些概念。

SQLJ 允许您在标记之间在 Java 代码中本地编写 SQL 查询

#sql{ ... };

但是,前面有一个步骤是“准备”代码并生成 .java 文件和 .bnd。

使用 SQLJ 时,您可以直接在代码中使用主机变量,而不必使用“Sets”方法。

String id = "A00";
#sql [ctx] iter = 
       {SELECT LASTNAME
        FROM EMPLOYEE
        WHERE EMPNO = :id}; 

InfoCenter中有很多例子:http: //pic.dhe.ibm.com/infocenter/db2luw/v10r1/topic/com.ibm.db2.luw.apdv.samptop.doc/doc/r0007622.html

有IBM的课程专注于这个技术:CG113,在网上找。

于 2012-10-17T14:20:10.827 回答