JDBC 和 DB2 中的命名参数标记
Named Parameter Markers in JDBC and DB2
我正在尝试使用命名参数标记,如:
SELECT field
FROM table
WHERE field = :value -- I'd like to use this ':value'
我一直在读这方面的内容,我知道我需要将我的 PreparedStatement 转换为 DB2PreparedStatement,我做到了,方法是在我的 pom.xml:
中也包含这个依赖项
<dependency>
<groupId>com.ibm.db2</groupId>
<artifactId>db2jcc</artifactId>
<version>8.1</version><!-- I was using 4.3.111 before -->
</dependency>
但是后来我来Eclipse试试,但是它似乎没有检测到DB2PreparedStatement中的setJccXXX()方法,我无法编译它。
我还了解到我可以通过继承为 Statement 编写自定义代码,但如果可以的话,我不想重新发明轮子。
我主要怀疑这可能与 db2jcc 的版本有关,但我认为这是我可以从允许使用的存储库中使用的最高版本。
附加数据:
在终端:
$ java -cp /full/path/to/db2jcc4.jar com.ibm.db2.jcc.DB2Jcc -version
IBM DB2 JDBC Universal Driver Architecture 2.3.63
在数据库中:
SELECT VERSIONNUMBER FROM SYSIBM.SYSVERSIONS
|VERSIONNUMBER|
|-------------|
|-10050900 |
|9070900 |
|10050800 |
|10051000 |
|11010405 |
|11010406 |
|11050700 |
看来,这个非常老的 Db2 jcc 2.3.63 版本驱动程序(来自 Db2 V8.2)不支持命名参数。
当前的 Db2 jcc 驱动程序确实支持这样的功能。
强烈建议使用Db2 Server版本对应的Db2 jcc驱动。
我正在尝试使用命名参数标记,如:
SELECT field
FROM table
WHERE field = :value -- I'd like to use this ':value'
我一直在读这方面的内容,我知道我需要将我的 PreparedStatement 转换为 DB2PreparedStatement,我做到了,方法是在我的 pom.xml:
中也包含这个依赖项 <dependency>
<groupId>com.ibm.db2</groupId>
<artifactId>db2jcc</artifactId>
<version>8.1</version><!-- I was using 4.3.111 before -->
</dependency>
但是后来我来Eclipse试试,但是它似乎没有检测到DB2PreparedStatement中的setJccXXX()方法,我无法编译它。
我还了解到我可以通过继承为 Statement 编写自定义代码,但如果可以的话,我不想重新发明轮子。
我主要怀疑这可能与 db2jcc 的版本有关,但我认为这是我可以从允许使用的存储库中使用的最高版本。
附加数据:
在终端: $ java -cp /full/path/to/db2jcc4.jar com.ibm.db2.jcc.DB2Jcc -version
IBM DB2 JDBC Universal Driver Architecture 2.3.63
在数据库中:
SELECT VERSIONNUMBER FROM SYSIBM.SYSVERSIONS
|VERSIONNUMBER|
|-------------|
|-10050900 |
|9070900 |
|10050800 |
|10051000 |
|11010405 |
|11010406 |
|11050700 |
看来,这个非常老的 Db2 jcc 2.3.63 版本驱动程序(来自 Db2 V8.2)不支持命名参数。
当前的 Db2 jcc 驱动程序确实支持这样的功能。
强烈建议使用Db2 Server版本对应的Db2 jcc驱动。