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 に答える