次のように、保存されたクエリ(「UpdatePaid」という名前、3つのパラメーター)を介してMSAccessテーブルに対応するデータグリッドとアダプターを使用しています。
OleDbCommand odc = new OleDbCommand("UpdatePaid", connection);
OleDbParameter param;
odc.CommandType = CommandType.StoredProcedure;
param = odc.Parameters.Add("v_iid", OleDbType.Double);
param.SourceColumn = "I";
param.SourceVersion = DataRowVersion.Original;
param = odc.Parameters.Add("v_pd", OleDbType.Boolean);
param.SourceColumn = "Paid";
param.SourceVersion = DataRowVersion.Current;
param = odc.Parameters.Add("v_Projected", OleDbType.Currency);
param.SourceColumn = "ProjectedCost";
param.SourceVersion = DataRowVersion.Current;
odc.Prepare();
myAdapter.UpdateCommand = odc;
...
myAdapter.Update();
それは正常に動作します...しかし、本当に奇妙なことは、 odc.Prepare()呼び出しを入れるまでうまくいかなかったことです。したがって、私の質問は次のとおりです。OleDb ストアド プロシージャ/クエリを操作するときに、常にそれを行う必要がありますか? なんで?また、SqlDbCommand を使用して同じことを行う必要がある別のプロジェクトも予定されています...それらも使用する必要がありますか?