Конференция ".Net" » инсерт строк через OleDbdataApapter
 
  • втыкатель строк (15.12.06 17:08) [0]
    кусок кода (пример из учебника)

    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

    Подскажите где ошибка.
  • DiamondShark © (18.12.06 19:58) [1]

    > кусок кода (пример из учебника)

    Либо неправильный учебник, либо неправильно прочтённый.

    Не поддерживаются в OleDbCommand именованные параметры. Только позиционные.
  • втыкатель строк (19.12.06 13:41) [2]
    В общем прокатило только с помощью OleDBCommandBuilder.
    Но это на MSSQL.
    На акцессе получалось и с именованными параметрами.

    /* Чума короче эта .нет */
 
Конференция ".Net" » инсерт строк через OleDbdataApapter
Есть новые Нет новых   [120145   +133][b:0][p:0]