Форум программистов, компьютерный форум, киберфорум
C#: Базы данных
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.89/18: Рейтинг темы: голосов - 18, средняя оценка - 4.89
10 / 10 / 7
Регистрация: 17.05.2009
Сообщений: 140

Удаление записей используя dataAdapter в связанных таблицах

24.01.2014, 19:13. Показов 3617. Ответов 8
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте.
Удаление из одной таблицы реализую так
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
try
               {
                   int index = dataGridView1.CurrentCell.RowIndex;
                   da.DeleteCommand = new MySqlCommand("Delete from plat WHERE `RNPFR` = @RNPFR");
                   da.DeleteCommand.Parameters.Add("RNPFR", MySqlDbType.String, 14, "RNPFR");
 
                   MySqlConnection con = new MySqlConnection();
                   con.ConnectionString = "Database=fixplat;Data Source=localhost;User Id=root;Password=;charset=utf8;";
                   con.Open();
                   da.DeleteCommand.Connection = con;
                   
                   dataGridView1.Rows.RemoveAt(index);
                   da.Update((DataSet)db.DataSource, "plat1");
                   
               }
               catch (Exception ex)
               {
                   MessageBox.Show(ex.Message);
               }
А вот как удалить со второй ? связь один ко одному.

Заполняются вот так
C#
1
2
3
4
5
6
7
8
9
10
11
da = new MySqlDataAdapter(cmd);
da.TableMappings.Add("Table", "plat1");
da.TableMappings.Add("Table1", "pcalc");
da.Fill(ds);
 
DataRelation dataRelation = new DataRelation("RNPFR1", ds.Tables["plat1"].Columns["RNPFR"], ds.Tables["pcalc"].Columns["RNPFR"]);
ds.Relations.Add(dataRelation);
 
db = new BindingSource(ds, "plat1");
dataGridView1.DataSource = db;
dataGridView2.DataSource = new BindingSource(dataGridView1.DataSource, "RNPFR1");
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
24.01.2014, 19:13
Ответы с готовыми решениями:

Удаление записей(DataAdapter)
Здравствуйте! Пишу на C# , столкнулся с такой проблемой. Работаю с MS SQL Express, получаю данные из таблицы следующим образом(код...

Удаление обновления данных в связанных таблицах
Всем доброго дня. Помогите пожалуйста от безысходности не знаю что делать. Перелапатил кучу инфы, но так и не нашёл нужно. Проблема...

Каскадное удаление записей в связанных таблицах (MS Access)
Нужно удалить запись в связанной таблице, а так как имеются в подчинненой связанной таблице записи соответствующие этой, то следовательно и...

8
8 / 8 / 4
Регистрация: 18.11.2012
Сообщений: 103
25.01.2014, 00:51
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
try
            {
                DataRowView drv = this.fKfacetraindbfacedbBindingSource.Current as DataRowView;
                DataRowView drg = this.facedbBindingSource.Current as DataRowView;
                int id = Convert.ToInt32(drv["id"].ToString());//ид таблицы 1
                int ida = Convert.ToInt32(drg["id_user"].ToString());// ид таблицы 2
                
                this.face_traindbTableAdapter.InsertQuery(ida = id , imageToByteArray(face_data));// А здесь вставишь свой запрос.
                recfaceDataSet.AcceptChanges();
                
                face_traindbTableAdapter.Update(recfaceDataSet);
                this.face_traindbTableAdapter.FillByTrain(this.recfaceDataSet.face_traindb);
                
            }
            catch (System.Exception ex)
            {
                System.Windows.Forms.MessageBox.Show(ex.Message);
            }
            return true;
0
 Аватар для kodv
1449 / 1121 / 347
Регистрация: 11.04.2011
Сообщений: 2,621
25.01.2014, 08:16
А почему SQL-команду для удаления вы показали, а команду для вставки вы показали как абстрактную переменную cmd? Каким образом вы возвращает 2 таблицы из СУБД? Что вам мешает сделать удаление по аналогии с выборкой?
0
10 / 10 / 7
Регистрация: 17.05.2009
Сообщений: 140
25.01.2014, 10:25  [ТС]
Serega1990, InsertQuery что за метод? в гугле не нашел
kodv,
SQL
1
SELECT * FROM plat; SELECT * FROM pcalc
Можно и сразу сделать запрос к БД, но так же нужно будет удалить данные из гридов, или же по новый их заполнить.
Как лучше сделать?
0
8 / 8 / 4
Регистрация: 18.11.2012
Сообщений: 103
25.01.2014, 11:25
Я же написал что за место этой переменной вставишь свой запрос SQL. Чтоб удалить запись одновременно со всех таблиц или добавить необходимо в запросе прописать, что Id таблицы1=ID таблицы2, тогда будет удаляться запись в таблицах с выбранным Id. По поводу InsertQuery - это вложенный запрос с помощью построителя запросов в среде, между прочим очень удобная вещь. За тебя строит запрос, а тебе только необходимо вставить переменные))

Добавлено через 1 минуту
https://www.cyberforum.ru/ado-... ost5671133 Вот можешь посмотреть как составлять такой запрос.
0
 Аватар для kodv
1449 / 1121 / 347
Регистрация: 11.04.2011
Сообщений: 2,621
25.01.2014, 14:55
Цитата Сообщение от skynet80
Как лучше сделать?
Лучше, конечно, для каждой таблицы использовать свой DataAdapter. Понял, в чем у вас загвоздка. Но я не нашел описание механизма обновления данных при нескольких таблицах в одном DataAdaper'е, а поэкспериментировать, чтобы понять этот механизм, сейчас нет возможности. Доберусь до компа с msvs обязательно посмотрю.
0
10 / 10 / 7
Регистрация: 17.05.2009
Сообщений: 140
25.01.2014, 15:42  [ТС]
kodv, кстати у меня до этого было два DataAdaper, которые заполняли один dataSet.
Получается мне нужно производить поиск по значению RNPFR (см запрос) во втором гриде и удалять строку с ним, чтобы адаптер сработал?
Или же можно как то по связанному значению удалить из обоих гридов строки и вызвать адаптеры?
0
 Аватар для kodv
1449 / 1121 / 347
Регистрация: 11.04.2011
Сообщений: 2,621
27.01.2014, 10:03
skynet80, есть встроенные механизмы:
C#
1
ds.Tables["plat1"].Constraints.Add(new ForeignKeyConstraint(ds.Tables["plat1"].Columns["RNPFR"], ds.Tables["pcalc"].Columns["RNPFR"]) {DeleteRule = Rule.Cascade});
После добавления данного констейнта, у вас строки в дочерней таблице должны удаляться автоматически при удалении из родительской. Потом останется только в нужно порядке вызывать Update у адаптеров. Подробнее тут.
2
10 / 10 / 7
Регистрация: 17.05.2009
Сообщений: 140
27.01.2014, 16:47  [ТС]
kodv, благодаря ссылке разобрался. DataRelation по умолчанию создает соответствие. Оставалось только вызвать Update для второй таблице. В Вашем примере почему происходила ошибка "Невозможно добавить это ограничение, т.к. ForeignKey не принадлежит таблице plat1"
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
27.01.2014, 16:47
Помогаю со студенческими работами здесь

Отбор записей с связанных таблицах
Доброго времени суток. Не подскажите, могу ли я отобрать заказы, которые не входят в табличку zakaz_zakaz_eks?

Удаление связанных строк в нескольких таблицах
Есть две таблицы: users и details. В users хранятся пользователи (идентификатор и имя), в details - расширенные данные о пользователях...

FindFirst и удаление данных в связанных таблицах
Есть несколько таблиц, в которых данные пересекаются на фамилии. Удаляю в одной таблице запись, следовательно,хочу удалить все связанные...

Удаление цепочки строк в связанных таблицах
Здравствуйте, Уважаемые форумчане! Подскажите, пожалуйста: как удалять строки в связанных таблицах за один присест, например с помощью...

Удаление связанных записей
Ребят помогите пожалуйста реализовать удаление связанных записей в таблице?


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Новые блоги и статьи
Символьное дифференцирование
igorrr37 13.02.2026
/ * Программа принимает математическое выражение в виде строки и выдаёт его производную в виде строки и вычисляет значение производной при заданном х Логарифм записывается как: (x-2)log(x^2+2) -. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru