我正在使用通过存储查询(名为“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 做同样的事情......我也必须用这些做吗?