На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
Дорогие друзья! Поздравляем вас с днём Победы!
msm.ru
  
> Help! ADO.Net несохранят в базу , использую dataAdapter
    делаю:
    ExpandedWrap disabled
                  DataSet Data = new DataSet();
       
                  OleDbConnection con = new OleDbConnection(connectionString);
                  OleDbDataAdapter da = new OleDbDataAdapter("select * from mytable where prise=33", con);
                  OleDbCommandBuilder builder = new OleDbCommandBuilder(da);
                  da.Fill(Data, "myTable");
       
                  Data.Tables["myTable"].Clear();
       
                  int cnt = da.Update(Data, "myTable");


    После чего cnt==0 и соотв в=из базы ничего не удалилось :wall:

    Обьясните, пожалйста, что я не так делаю?
      Если у тебя база подцеплена к проекту, то вполне возможно, что ты вносишь изменения в mdb-файл, лежащий в bin\debug, а студия его благополучно затирает при каждой компиляции. Чтобы этого избежать, нужно в свойствах то ли датасетов, толи базы выбрать Do Not Copy у свойства Copy to output directoty.
      Далее, OleDbCommandBuilder у тебя вообще зачем? Добавь
      ExpandedWrap disabled
                    da.UpdateCommand = builder.GetUpdateCommand();
                    da.DeleteCommand = builder.GetDeleteCommand();
        Цитата wdk @
        Если у тебя база подцеплена к проекту, то вполне возможно, что ты вносишь изменения в mdb-файл, лежащий в bin\debug, а студия его благополучно затирает при каждой компиляции. Чтобы этого избежать, нужно в свойствах то ли датасетов, толи базы выбрать Do Not Copy у свойства Copy to output directoty.
        Далее, OleDbCommandBuilder у тебя вообще зачем? Добавь
        ExpandedWrap disabled
                      da.UpdateCommand = builder.GetUpdateCommand();
                      da.DeleteCommand = builder.GetDeleteCommand();

        Не, база к проекту не подцеплена, там разные по ходу выполнения подключаються.
        Я думал, что OleDbCommandBuilder автоматом генерит комманды и сам их куданадо присваиват, я сделал как в примере из книги "Архитектура корпоративных программных систем" Фаулера.

        Прикол в том что если не чистить в коде таблицу а скармливать ее DataGrsdView и там клацать, то фсе пашет :o

        Пробовал добавить:
        ExpandedWrap disabled
                      da.UpdateCommand = builder.GetUpdateCommand();
                      da.DeleteCommand = builder.GetDeleteCommand();

        ничего не дало, но с DataGrsdView работать не перестало, по-ходу команды в ручную можно и не присваивать.
        Сообщение отредактировано: Ufi -
          Мож тогда попробовать чистить так?
          ExpandedWrap disabled
            Data.Tables["myTable"].Rows.Clear();
            Ufi, для того чтобы дата адаптер использовал DeleteCommand для удаления, в таблице должны быть строки с DataRowState=Deleted.
            Для того чтобы перевести строку в такое состояние, нужно вызвать одноименный метод Delete() у DataRow, то есть, если удалять строки вот так:
            ExpandedWrap disabled
              DataTable someDt;
                          foreach (DataRow r in someDt.Rows)
                              r.Delete();

            а потом вызвать у DataAdapter Update() - будет работать точно

            Насчет Clear() для DataTable - не уверен что будет работать аналогично. Если интересно - напиши тестик
            Удачи ;)
              Всем спасибо за участие! Все работает так как PIL написал :D :
              ExpandedWrap disabled
                            DataTable someDt;
                            foreach (DataRow r in someDt.Rows)
                                r.Delete();//пашет


              ExpandedWrap disabled
                Data.Tables["myTable"].Rows.Clear();//не пашет
              0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
              0 пользователей:


              Рейтинг@Mail.ru
              [ Script execution time: 0,0232 ]   [ 16 queries used ]   [ Generated: 12.05.24, 14:46 GMT ]