当我通过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();
答案 0 :(得分:1)
OleDbCommand不使用命名参数。您需要更改insert语句,以便它使用问题。
InsSavDiaryCmd = "Insert into My_Table1 (sl_no,reminder) values (?, ?) ";
您需要确保每个问号都有一个参数,并确保按插入语句中的参数顺序插入参数。
**如果您想使用名称参数......您可以尝试使用VfpClient这是我正在努力使.Net的数据访问更好的项目。