我有一个连接数据库的java程序,我正在尝试使用预处理语句和参数化查询更新数据库中的某些内容。这是我的代码的一部分:
updateValSetId = con.prepareStatement("UPDATE COLUMNNAME " +
"SET COLUMNDISPLAYNAME = ? + ' Value Set Identifier' " +
"WHERE COLUMNDISPLAYNAME = ? + 'VALSETID' and TABLENAME = ?");
我为问号参数输入的前几个值是1- Account,2- ACCT,第三个值无关紧要。我的问题是--->有没有办法将问号组合成字符串值?添加标志不起作用我收到错误“ORA = 01722:无效数字”
在我查找错误意味着什么后,我将代码改为:
updateValSetId = con.prepareStatement("UPDATE COLUMNNAME " +
"SET COLUMNDISPLAYNAME = '? Value Set Identifier' " +
"WHERE COLUMNDISPLAYNAME = '?VALSETID' and TABLENAME = ?");
也没用。那么有没有办法将问号与字符串结合起来?
谢谢!
EDIT ---------->我决定拿出字符串后的文字?把它放在一个不同的地方:
updateValSetId.setString(1, f.getValue() + " Value Set Identifier");
updateValSetId.setString(2, f.getKey() + "VALSETID");
updateValSetId.setString(3, e.getKey());
updateValSetId.executeUpdate();
这是在我准备好的陈述之后,当我将值分配给?参数。 'f'和'e'是我存储数据的哈希图,我想知道为什么当我将字符串添加到我从getValue和getKey得到的值时上面的代码不起作用。我没有得到任何错误,它编译并运行但它不会更新我想要它在数据库中的值。例如,ACCT是第一个键,而Account是第一个值,因此当它们被传入时,它们最终应该被添加到我在getter之后的字符串中,因此数据库应该将ACCTVALSETID更新为Account Value Set Identifier, ?我错过了什么?
谢谢!
答案 0 :(得分:0)
我所做的编辑实际上是正确的,我在代码的其他部分出错,以下代码有效:
updateValSetId.setString(1, f.getValue() + " Value Set Identifier");
updateValSetId.setString(2, f.getKey() + "VALSETID");
updateValSetId.setString(3, e.getKey());
updateValSetId.executeUpdate();
所以我猜你不能添加字符串值?参数,但这与将其添加到?
的情况完全相同