我正在使用 SQL 变量替换,但出现以下错误:
at com.ibm.as400.access.JDError.throwSQLException(JDError.java:408)
at com.ibm.as400.access.AS400JDBCPreparedStatement.setValue(AS400JDBCPreparedStatement.java:3532)
at com.ibm.as400.access.AS400JDBCPreparedStatement.setString(AS400JDBCPreparedStatement.java:3211)
at queries.RunQueryDB2.runNameAccount(RunQueryDB2.java:237)
跟踪将我带到此代码部分,
stmt.setString( 1, name[0]);
stmt.setString( 2, name[1]);
stmt.setString( 3, name[2]);
引用此 SQL 变量替换:
nameToAcctQuery="SELECT DISTINCT a.Acnum"
+ "FROM table c, table p, table a "
+ "WHERE c.First= '?.toUpperCase()' "
+ "AND c.Mid= '?.toUpperCase()' "
+ "AND c.Last= '?.toUpperCase()' "
+ "AND p.Pol= a.pol"
+ "AND p.name= c.name";
我在许多其他查询中使用这种格式,但我一生都无法弄清楚为什么我在变量替换中遇到错误。有什么想法吗?
最佳答案
像这样修改你的代码:
stmt.setString( 1, name[0].toUpperCase());
stmt.setString( 2, name[1].toUpperCase());
stmt.setString( 3, name[2].toUpperCase());
您的查询如下(DB2 不知道 toUpperCase
函数):
nameToAcctQuery="SELECT DISTINCT a.Acnum"
+ "FROM table c, table p, table a "
+ "WHERE c.First= ? "
+ "AND c.Mid= ? "
+ "AND c.Last= ? "
+ "AND p.Pol= a.pol"
+ "AND p.name= c.name";
关于java - 查询变量替换错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44375182/