データベースに接続する Java プログラムがあり、準備されたステートメントとパラメーター化されたクエリを使用してデータベース内の何かを更新しようとしています。ここに私のコードの一部があります:
updateValSetId = con.prepareStatement("UPDATE COLUMNNAME " +
"SET COLUMNDISPLAYNAME = ? + ' Value Set Identifier' " +
"WHERE COLUMNDISPLAYNAME = ? + 'VALSETID' and TABLENAME = ?");
クエスチョン マーク引数に入力する最初の 2 つの値は、1-アカウント、2-ACCT で、3 番目の値は重要ではありません。私の質問は ---> 疑問符を文字列値に結合する方法はありますか? 加算記号が機能しない「ORA=01722: 無効な番号」というエラーが表示される
そのエラーの意味を調べた後、コードを次のように変更しました。
updateValSetId = con.prepareStatement("UPDATE COLUMNNAME " +
"SET COLUMNDISPLAYNAME = '? Value Set Identifier' " +
"WHERE COLUMNDISPLAYNAME = '?VALSETID' and TABLENAME = ?");
それもうまくいきませんでした。もう一度、疑問符を文字列と組み合わせる方法はありますか?
ありがとう!
編集 ----------> ? の後の文字列テキストを取り出すことにしました。そしてそれを別の場所に置きます:
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 に更新する必要があります。 ? 私は何が欠けていますか?
ありがとう!