通过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中提到过。