0

データは実際にはバイナリですが、MSSQL データベースに varchar として格納されているレガシー データがあります。新しいアプリケーションでは、OleDbCommand を使用しています (共通コードを使用して MSSQL+Oracle+Sybase データベースにアクセスしようとしているため)。

次を実行して、データベースからデータを取得できます。

    DA.SelectCommand.CommandText = "select 
sequence_num, summary_num, line_num, CONVERT(varbinary, other_information) other_information 
from alex_test_bin";

ただし、挿入コマンド:

   DA.InsertCommand.CommandText = "insert into alex2_test_bin 
(sequence_num, summary_num, line_num, other_information) 
values(?, ?, ?, CONVERT(varchar, ?))";

このエラーがスローされます (「DA.Update(DT);」中に発生します):

1 つ以上の必須パラメーターに値が指定されていません。

現在、alex_test_bin からデータを読み取り、そのデータを alex2_test_bin に挿入しようとしています。読み取りと書き込みの合間に、DT からの各行でメソッド 'SetAdded()' を使用して、それらのすべての行が挿入されるようにします。

私の挿入文は間違っていますか?それを修正し、挿入ステートメント内で関数を使用できるようにする方法はありますか? SQLマネージャーからinsertステートメントを手動で正常に実行しました。

4

1 に答える 1

1

完全なコードが表示されない場合は、パラメータをに追加していないようですDA.InsertCommand

で示されるパラメーターごと?に、OleDbParameterを追加する必要があります。

DA.InsertCommand.Parameters.Parameters.Add("@sequence_num", OleDbType.Integer).Value = 42

insert intoこれらは、ステートメントで指定されているのと同じ順序でコマンドに追加する必要があります。

于 2012-10-03T14:41:45.937 に答える