通过Statement对象执行查询时,工作正常,但通过PreparedStatement对象执行同一查询会引发SQL异常。

这个查询工作正常...

 String query = "SELECT A, B, C, D, LOBJ FROM TABLE WHERE LOBJ = 'sGMMEMDEML2';

Statement stmt = con.createStatement()

ResultSet rs = stmt.executeQuery(query);

此查询引发sql异常(DB2 SQL错误:SQLCODE = -302,SQLSTATE = 22001,SQLERRMC = null)...
String query = "SELECT A, B, C, D, LOBJ FROM TABLE WHERE LOBJ = ?;

PreparedStatement preStmt = con.prepareStatement(query);

preStmt.setString(1, 'sGMMEMDEML2');

ResultSet rs = preStmt.executeQuery();

视图TABLE中的LOBJ列为10个字符长,但由于Application中的某些限制,其在where子句中指定的值可能为10个字符长或为10个字符长。

有人可以帮我吗,如何使用PreparedStatement执行。

提前致谢。

最佳答案

您可能想要打开DB2与Oracle或MySQL的兼容性(在DB2命令行中运行这些命令):

db2set DB2_COMPATIBILITY_VECTOR=ORA # or MYS
db2stop
db2start

但是请注意,这仅影响新创建的数据库(至少影响DB2_COMPATIBILITY_VECTOR)。有关详细信息,请咨询DB2 documentation(但是,请注意,关于MYS的事情记录得不是很好,但至少在C-Express 9.7.4 release notes中提到过。

10-05 22:48
查看更多