powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / Не удаляются строки из БД, при Update() SqlDataAdapter'а
15 сообщений из 15, страница 1 из 1
Не удаляются строки из БД, при Update() SqlDataAdapter'а
    #33863182
Myloe
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Проблема такая. Использую типизированный ДатаСет. ДатаАдаптеры создал через дизайнер, подключил, датасет заполнился. НО.. При удалении строки таблицы из датасета, после вызова myAdapter.Update(myDataSet, "MyTableName"), изменения не сохраняются в БД. Хотя при вставке новой строки - всё работает. Команда удаления в Адаптере создана автоматически:

this.sqlDeleteCommand4.CommandText = "DELETE FROM User_Group WHERE (GrID = @Original_GrID) AND (UserID = @Original_UserID)";
this.sqlDeleteCommand4.Connection = this.sqlConnection1;
this.sqlDeleteCommand4.Parameters.Add(new System.Data.SqlClient.SqlParameter("@Original_GrID", System.Data.SqlDbType.Int, 4, System.Data.ParameterDirection.Input, false, ((System.Byte)(0)), ((System.Byte)(0)), "GrID", System.Data.DataRowVersion.Original, null));
this.sqlDeleteCommand4.Parameters.Add(new System.Data.SqlClient.SqlParameter("@Original_UserID", System.Data.SqlDbType.Int, 4, System.Data.ParameterDirection.Input, false, ((System.Byte)(0)), ((System.Byte)(0)), "UserID", System.Data.DataRowVersion.Original, null));

Подскажите, в чём может быть проблема.
...
Рейтинг: 0 / 0
Не удаляются строки из БД, при Update() SqlDataAdapter'а
    #33863416
Myloe
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
P.S. Использую VS 2003
...
Рейтинг: 0 / 0
Не удаляются строки из БД, при Update() SqlDataAdapter'а
    #33863468
Фотография buser
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Запустите Profiler...
...
Рейтинг: 0 / 0
Не удаляются строки из БД, при Update() SqlDataAdapter'а
    #33863600
Myloe
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ага. Пусто... Хотя UPDATE и INSERT срабатывают нормально.
...
Рейтинг: 0 / 0
Не удаляются строки из БД, при Update() SqlDataAdapter'а
    #33863863
Myloe
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Так и что дальше делать? В чём проблема?
...
Рейтинг: 0 / 0
Не удаляются строки из БД, при Update() SqlDataAdapter'а
    #33866367
Фотография Super_p
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MyloeТак и что дальше делать? В чём проблема?

У меня та же проблема, только в 2005-той студии... Инсерт и апдейт работают, а удаление никак не пашет... Уже все перепробывал!
...
Рейтинг: 0 / 0
Не удаляются строки из БД, при Update() SqlDataAdapter'а
    #33866468
RomCom
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Удаление надо обрабатывать в событии Table.RowChanged
Иначе запись удаляется из таблицы и методу myAdapter.Update(myDataSet, "MyTableName") ничего не перепадает.
...
Рейтинг: 0 / 0
Не удаляются строки из БД, при Update() SqlDataAdapter'а
    #33866487
Sa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Super_p
Инсерт и апдейт работают, а удаление никак не пашет... Уже все перепробывал!

а есть что удалять???
пробовали перед Update посмотреть есть ли записи для удаления
Код: plaintext
1.
GetChanges(DataRowState.Deleted);
+ профайлером посмотреть что за команда идет к серваку. Проверить исполнить ее в QA.
Посмотреть есть ли записи удовлетворяющие where, вполне возможно что записей удовлетворяющих where уже нет.
тогда по идее должен выпасть exception.
вообщем призыв один - проверять свой код по шагам.
....

Код: plaintext
 uid  =  S a

Posted via ActualForum NNTP Server 1.3
...
Рейтинг: 0 / 0
Не удаляются строки из БД, при Update() SqlDataAdapter'а
    #33866766
Фотография Super_p
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sa
Super_p
Инсерт и апдейт работают, а удаление никак не пашет... Уже все перепробывал!

а есть что удалять???
пробовали перед Update посмотреть есть ли записи для удаления
Код: plaintext
1.
GetChanges(DataRowState.Deleted);
+ профайлером посмотреть что за команда идет к серваку. Проверить исполнить ее в QA.
Посмотреть есть ли записи удовлетворяющие where, вполне возможно что записей удовлетворяющих where уже нет.
тогда по идее должен выпасть exception.
вообщем призыв один - проверять свой код по шагам.
....

Код: plaintext
 uid  =  S a
Posted via ActualForum NNTP Server 1.3


Я удаляю строку из ДатаСет-а, а потом делаю Update...
...
Рейтинг: 0 / 0
Не удаляются строки из БД, при Update() SqlDataAdapter'а
    #33868674
RomCom
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Попробуте так:
Код: plaintext
1.
2.
3.
4.
5.
6.
myDataSet.Tables["MyTableName"].RowDeleted += new DataRowChangeEventHandler(Row_Deleted);
...........
        public void Row_Deleted(Object sender, DataRowChangeEventArgs e)
        {  
           myAdapter.Update(new DataRow[] { e.Row });
        }

P.S. мои опыты с GetChanges(DataRowState.Deleted); показали, что этот метод, с данным параметром, всегда возращает null.
...
Рейтинг: 0 / 0
Не удаляются строки из БД, при Update() SqlDataAdapter'а
    #33868736
Sa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
RomCom
Удаление надо обрабатывать в событии Table.RowChanged

хм... не в одной из моих программ нет этого, однако записи прекрасно удаляются.
RomCom
мои опыты с GetChanges(DataRowState.Deleted); показали, что этот метод, с данным параметром, всегда возращает null.

вы просто не умеет его готовить :-) и я догадываюсь в чем здесь причина. но все же надо смотреть ваш код.

Иллюстрирующий пример:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
DataTable dt = CreateDataTable();
DataTable deleted = dt.GetChanges(DataRowState.Deleted);
if (deleted != null) {
     Console.WriteLine(string.Format("(before) deleted rows = {0}", deleted.Rows.Count));
} else {
     Console.WriteLine("(before) no rows"); // удалений не было попадем сюда
}

dt.Rows[1].Delete(); // удаление раз
dt.Rows[2].Delete(); // удаление еще раз

deleted = dt.GetChanges(DataRowState.Deleted);
if (deleted != null) {
     Console.WriteLine(string.Format("(after) deleted rows = {0}", deleted.Rows.Count)); // а теперь попадем сюда
} else {
     Console.WriteLine("(after) no rows");
}

private DataTable CreateDataTable() {
     DataTable dt = new DataTable();
     dt.Columns.Add(new DataColumn("id", typeof(int)));
     dt.Columns.Add(new DataColumn("col1", typeof(string)));
     dt.Columns.Add(new DataColumn("col2", typeof(string)));
     dt.Rows.Add(new object[] {1, "id 1", "laksdfj"});
     dt.Rows.Add(new object[] {2, "id 2", "laksasdfasfd" });
     dt.Rows.Add(new object[] { 3, "id 3", "lafasfd" });
     dt.AcceptChanges();
     return dt;
}

Результат:
Код: plaintext
1.
2.
(before) no rows
(after) deleted rows =  2 

Super_p
Я удаляю строку из ДатаСет-а, а потом делаю Update...

это все понятно. но проделайте все действия описанные мною в предыдущем посте, чтобы разобраться в причине.

Код: plaintext
 uid  =  S a

Posted via ActualForum NNTP Server 1.3
...
Рейтинг: 0 / 0
Не удаляются строки из БД, при Update() SqlDataAdapter'а
    #33872225
Myloe
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
У меня проблема решилась. Нужно было удалять объект DataRow напрямую, вызовом метода Delete(), а я делал через генерированный метод удаления в ДатаСете. Видимо строка просто удалялась из коллекции Rows, а не помечалась к удалению
...
Рейтинг: 0 / 0
Не удаляются строки из БД, при Update() SqlDataAdapter'а
    #33872670
RomCom
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Действительно через метод Rows[index].Delete() получается :)
Я же до этого использовал метод Rows.RemoveAt(index) и запеси удалялись безвозвратно.
Sa, спасибо за наводку.
...
Рейтинг: 0 / 0
Не удаляются строки из БД, при Update() SqlDataAdapter'а
    #33887271
Tolya
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
[....] пользуется UPDATE тем более во фреймворке 1.1. Используй хранимые процедуры для вставки, обновления или удаления. Это работает безотказно. ADO.NET вообще вещь медленная и честно говоря фигня это.
Все эти прибамбасы приводят только к замедлению работы. А этот метод глюкавый, так что лучше его не вызывай.

Модератор:
Сообщение отредактировано.
По меньше эмоций, давайте уважать других участников форума!
...
Рейтинг: 0 / 0
Не удаляются строки из БД, при Update() SqlDataAdapter'а
    #33887357
Sa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Tolya
Используй хранимые процедуры для вставки, обновления или удаления. Это работает безотказно.

не всегда ХП нужны, чтобы не привязываться жестко к поставщику СУБД. Все зависит от задачи автора, т.к. мы ее не знаем, ИМХО советы давать такие излишни опрометчиво.
+ про ХП уже обсуждалось на форуме. можно воспользоваться поиском.

Tolya
ADO.NET вообще вещь медленная и честно говоря фигня это.

no comments, тем более на форуме, посвященной этой технологии.

Tolya
Все эти прибамбасы приводят только к замедлению работы. А этот метод глюкавый, так что лучше его не вызывай.

а пример глюкавости можете привести? Насколько я понял речь идет про метод Delete ?

Код: plaintext
 uid  =  S a

Posted via ActualForum NNTP Server 1.3
...
Рейтинг: 0 / 0
15 сообщений из 15, страница 1 из 1
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / Не удаляются строки из БД, при Update() SqlDataAdapter'а
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]