-
кусок кода (пример из учебника)
string insert = "insert into mytable(field1,field2) values(@field1,@field2)"; ..... //инициализация таблицы и заполнение данными (работает ок) ..... //команда на вставку для датаадаптера da.InsertCommand = new OleDbCommand(insert, conn); OleDbParameter pa = null; pa = da.InsertCommand.Parameters.Add(new OleDbParameter("@field1",OleDbType.BigInt)); pa.SourceColumn = "field1"; pa.SourceVersion = DataRowVersion.Current;
pa = da.InsertCommand.Parameters.Add(new OleDbParameter("@field2", OleDbType.VarChar)); pa.SourceColumn = "field2"; pa.SourceVersion = DataRowVersion.Current; //новая строка в DataTable DataRow dr = dt.NewRow(); dt.Rows.Add(dr); dr["field1"] = 1; dr["field2"] = "один"; da.Update(dt);
dr.AcceptChanges();
В общем получаю ошибку что переменная @field1 не объявлена. Хотя вроде параметры созданы и добавлены к InsertCommand
Подскажите где ошибка.
-
> кусок кода (пример из учебника)
Либо неправильный учебник, либо неправильно прочтённый.
Не поддерживаются в OleDbCommand именованные параметры. Только позиционные.
-
В общем прокатило только с помощью OleDBCommandBuilder. Но это на MSSQL. На акцессе получалось и с именованными параметрами.
/* Чума короче эта .нет */
|