OleDbDataAdapter更新到dbf [免费表] - 语法错误()

时间:2012-10-03 12:19:18

标签: c# oledb dbf

当我通过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();

1 个答案:

答案 0 :(得分:1)

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

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

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

**如果您想使用名称参数......您可以尝试使用VfpClient这是我正在努力使.Net的数据访问更好的项目。