-1

ResultSetを更新しようとすると、問題が発生します。JDBCを介してデータベースにクエリを実行し、CONCUR_UPDATABLEではない結果セットを取得しています。指定された列で「_」を「」に置き換える必要があります。どうすればそれができますか?

String value = derivedResult.getString(column).replace("_", " ");
derivedResult.updateString(column, value);
derivedResult.updateRow();

これは更新可能で正常に機能しますが、ResultSet.CONCUR_READ_ONLYの場合はどうなりますか?

編集:

これは、別のJDBCドライバーを呼び出すJDBCドライバーになります。私の問題は、転送専用または読み取り専用であっても、ResultSetのコンテンツを置き換える必要があることです。scroll_insensitiveとupdatableを設定した場合、問題はありませんが、転送のみの結果セットで動作するJDBCドライバーがあります。

ソリューション:

  • 結果をインメモリデータベースに移動し、そこでコンテンツを置き換えようとする必要があります。
  • 他のすべてのクラスと同じように機能する結果セットを実装する必要があります。必要に応じて、基になるドライバー関数を変更して呼び出します。

後で結果を使用して更新や挿入を行いたくありません。基本的に、これは一部のクエリで実行されます。

4

1 に答える 1

1

私の経験では、結果セットの更新は単純なクエリ(単一のテーブルのselectステートメント)でのみ可能です。ただし、データベースによっては、これが変わる場合があります。まず、データベースのドキュメントを参照します。

更新可能な独自の結果セットを作成したとしても、データベースデータが変更されると思うのはなぜですか。更新メカニズムが公開されていないコードを使用し、使用するjdbcドライバーの結果セットインスタンス実装タイプにのみ存在する可能性が非常に高くなります(ほぼ確実です)。

上記が理にかなっていることを願っています。

于 2013-03-06T13:03:35.370 に答える