0

当我通过 OleDbCommand 插入直接值没问题时,它工作正常

OleDbCommand OleCmd1 = new OleDbCommand("Insert into My_Diary (sl_no,reminder) values("+a1+",'CHECK VALUE')", OleCon1);
OleCmd1->ExecuteNonQuery();

但是当我喜欢通过参数更新时,它显示“语法错误”......我无法识别我的错误......

string MyConStr = "Provider=VFPOLEDB.1; Data Source='C:\\For_Dbf'; Persist Security Info=False";    
InsSavDiaryCmd = "Insert into My_Table1 (sl_no,reminder) values (@sl_no,@reminder) ";

VFPDAp=gcnew OleDbDataAdapter();
VFPDApMy_Table1InsertCommand = gcnew OleDbCommand(InsSavDiaryCmd, OleCon1);

WithInsVar = VFPDAp.InsertCommand.Parameters;
WithInsVar.Add("@sl_no", OleDbType.Integer, 10, "sl_no");
WithInsVar.Add("@reminder", OleDbType.Char, 250, "reminder");

OleCon1.ConnectionString = MyConStr;
OleCon1.Open();

OleDbTransaction Trans=OleCon1.BeginTransaction();

//VFPDAp.DeleteCommand.Transaction = Trans;
//VFPDAp.UpdateCommand.Transaction = Trans;
VFPDAp.InsertCommand.Transaction = Trans;

VFPDAp.Update(MyDataTbl);
Trans.Commit();
OleCon1.Close();
4

1 回答 1

1

OleDbCommand 不使用命名参数。您需要更改插入语句,以便它使用问题。

InsSavDiaryCmd = "Insert into My_Table1 (sl_no,reminder) values (?, ?) ";

您需要确保每个问号都有一个参数,并确保按照它们在插入语句中的使用顺序插入参数。

** 如果您想使用名称参数...您可以尝试使用VfpClient,这是我正在开发的一个项目,旨在让 .Net 的数据访问更好一些。

于 2012-10-03T12:30:48.557 回答