java - 查询变量替换错误

标签 java sql db2

我正在使用 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/

相关文章:

sql - 如何从 IBM DB2 中的存储过程返回临时表

sql - 创建 DB2 历史表触发器

Java EE HTTP 状态 500 - 权限被拒绝

java - 当我想在 sqlite 表中插入一个值时,当我在 editText 中添加引号时,我的应用程序不断崩溃如何解决此问题?

mysql - 从数据库获取成员(member)id

mysql - 创建包含静态 BIT 值的 MySQL View

Java,惰性表达式的正则表达式性能较差

java - 哈夫曼树字符串表示

mysql - 从多列中选择最小值然后计算它们的总和的最佳方法是什么?

PHP 替代 mysql_data_seek for ODBC