1

UPDATE MY_TABLE SET COL_1=?, COL_2=? where 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);
4

1 回答 1

11

我想你想创建一个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 注入。

更多关于这个链接

于 2012-05-25T11:41:28.567 回答