作者热门文章
- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
UPDATE MY_TABLE SET COL_1=?, COL_2=?其中 COL_3=? AND COL_4=?
然后我将数组中准确数量的值发送到语句(在我的例子中:4)。这样做我得到异常:在索引处缺少 IN 或 OUT 参数::4
注意:我认为我们不能做 SET COL_1=?,COL_2=?
我们需要做 SET COL_1='DESIRED_VALUE',COL_2='DESIRED_VALUE'
是这个我的误解?
Java代码
StringBuilder updateQuery=new StringBuilder("UPDATE MY_TABLE SET COL_1=?, COL_2=? where BOOKMARKID_ACT=? AND DIMID_ACT=?");
ArrayList<Object> alObjectData=new ArrayList<Object>();
alObjectData.add("VALUE1");
alObjectData.add("VALUE2");
alObjectData.add("VALUE3");
alObjectData.add("VALUE4");
dpQuery.executeUpdate(connTemp, updateQuery.toString(), alObjectData);
最佳答案
我想你想创建一个PreparedStatement
。它应该看起来像这样:
// con is your active connection
String sqlStatement = "UPDATE MY_TABLE SET COL_1=?, COL_2=? where BOOKMARKID_ACT=? AND DIMID_ACT=?";
PreparedStatement prest = con.prepareStatement(sqlStatement);
prest.setString(1, valueFirstParam);
prest.setString(2, valueSecondParam);
prest.setString(3, valueThirdParam);
prest.setString(4, valueFourthParam);
prest.executeUpdate();
你还应该在类的顶部添加这一行
import java.sql.*;
PreparedStatements 避免您的代码遭受 sql 注入(inject)。
关于java - 这是发送给 Oracle 的正确查询吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10752809/
我是一名优秀的程序员,十分优秀!