Модераторы: Partizan, gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> .AcceptChanges() не срабатывает, SQL 
:(
    Опции темы
-ser-
Дата 8.2.2005, 08:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 344
Регистрация: 1.2.2005

Репутация: 5
Всего: 13



Код
SqlDataAdapter myAdapter;
DataSet myDS;
DataTable myTable;
DataRow myRow;

SqlConnection conn = new SqlConnection();
...  //conn.ConnectionString = ...
conn.Open();

myAdapter = new SqlDataAdapter( "select * from tbl_customer", conn );
myDS = new DataSet();

myAdapter.Fill(myDS, "tbl_customer" );

myTable = myDS.Tables["tbl_customer"];
   
myRow   = myTable.NewRow();            
MessageBox.Show("New Row " + myRow.RowState); //показывает что New Row Detached

myRow["FirstName"] = "newFirstName";
myRow["LastName"]  = "newLastName ";
           
myTable.Rows.Add(myRow);
MessageBox.Show("AddRow " + myRow.RowState);//показывает что AddRow Added

   
myDS.AcceptChanges();
MessageBox.Show("AcceptChanges " + myRow.RowState);//показывает AcceptChanges Unchanged !!!


conn.Close();
з.ы.таблица создавалась SQL Server-ом, но установлены все возможные разрешения.

Это сообщение отредактировал(а) -ser- - 8.2.2005, 08:15


--------------------
"Тонкая, однако, работа." 
PM MAIL ICQ   Вверх
Domestic Cat
Дата 8.2.2005, 09:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5452
Регистрация: 3.5.2004
Где: Dallas, US

Репутация: 9
Всего: 172



smile smile smile
Метод AcceptChanges() попросту говорит датасету что все изменения сделанные юзером можно считать переданными в ДБ. Потому твой код вообще изменений никуда не посылает.

Чтоб работало, нужно вызывать Update на адаптере.

Кстати коннекшн не обязательно явно открывать и закрывать, адаптер делает это сам.


--------------------

PM   Вверх
-ser-
Дата 8.2.2005, 09:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 344
Регистрация: 1.2.2005

Репутация: 5
Всего: 13



перед
Код
conn.Close()
для форума я опустил вызов метода UpdateDataSet(myDS); так как в нем все равно программа изменений не видела по той же самой причинеsmile
Код
private void UpdateDataSet(DataSet myDataSet1)
{
if (!myDataSet1.HasChanges(DataRowState.Added))
{
   MessageBox.Show("ret" + DataRowState.Added + "  " + DataRowState.Modified); //заходит сюда !!!
   return;
}
DataSet xDataSet;
xDataSet = myDataSet1.GetChanges(DataRowState.Added);
if (xDataSet.HasErrors)
{
   MessageBox.Show("errrrr");
   // to resolve errors.
}
myAdapter.Update(xDataSet);
}


Это сообщение отредактировал(а) -ser- - 8.2.2005, 09:57


--------------------
"Тонкая, однако, работа." 
PM MAIL ICQ   Вверх
Domestic Cat
Дата 8.2.2005, 10:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5452
Регистрация: 3.5.2004
Где: Dallas, US

Репутация: 9
Всего: 172



То есть твой метод стоит между myDS.AcceptChanges() и conn.Close()?


--------------------

PM   Вверх
-ser-
Дата 8.2.2005, 10:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 344
Регистрация: 1.2.2005

Репутация: 5
Всего: 13



точно так.


--------------------
"Тонкая, однако, работа." 
PM MAIL ICQ   Вверх
Domestic Cat
Дата 8.2.2005, 11:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5452
Регистрация: 3.5.2004
Где: Dallas, US

Репутация: 9
Всего: 172



Ну так он должен стоять перед AcceptChanges.


--------------------

PM   Вверх
-ser-
Дата 8.2.2005, 12:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 344
Регистрация: 1.2.2005

Репутация: 5
Всего: 13



согласен, но и здесь ничего не работало пока не указал
Код
SqlCommandBuilder cb;
cb= new SqlCommandBuilder(myAdapter);
сейчас все сохраняет на сервере. кстати вопреки документации AcceptChanges вообще убрал, т.к. в конечном итоге они так и не фиксировали изменений.


--------------------
"Тонкая, однако, работа." 
PM MAIL ICQ   Вверх
Domestic Cat
Дата 8.2.2005, 19:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5452
Регистрация: 3.5.2004
Где: Dallas, US

Репутация: 9
Всего: 172



Само сoboj, по умолчанию у адаптера логики обновлений нет. Либо вручную пишешь комманд билдер, либо добавляешь ее в конфигурейшн визард адаптера.


--------------------

PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
mr.DUDA
THandle

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.
Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :)
Так же не забывайте отмечать свой вопрос решенным, если он таковым является :)


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Общие вопросы по .NET и C# | Следующая тема »


 




[ Время генерации скрипта: 0.0454 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.