【发布时间】:2011-02-22 10:51:04
【问题描述】:
通过 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 个字符,但由于应用程序的某些限制,它在 where 子句中的指定值可能是也可能不是 10 个字符长。
谁能帮助我,如何使用 PreparedStatement 执行此操作。
提前致谢。
【问题讨论】:
-
这个问题出现在我可以访问的一些但不是所有的 DB2 安装上。例如,它出现在:DB2 v9.7 Linux64、v9.7.3 Linux64、v9.7.3+FP4 (=9.7.4?) Linux64 而未在:DB2 C-express 9.7.4 Linux64/Windows64、DB2 v9 上观察到。 7.4 Windows64。