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 (?, ?) ";

疑問符ごとにパラメーターがあることを確認し、insert ステートメントでパラメーターが使用順に挿入されていることを確認する必要があります。

** 名前パラメーターを使用したい場合は、 VfpClientを使用してみてください。VfpClientは、.Net からのデータ アクセスを少し改善するために取り組んでいるプロジェクトです。

于 2012-10-03T12:30:48.557 に答える