Форум программистов, компьютерный форум, киберфорум
C#: Базы данных
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.57/35: Рейтинг темы: голосов - 35, средняя оценка - 4.57
0 / 0 / 0
Регистрация: 18.03.2010
Сообщений: 4

DataGrid изменение и удаление строк

18.03.2010, 14:24. Показов 6870. Ответов 8
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Не очень давно начал учить C# потому просьба строго не судить

Ситуация такова, я создал таблицу в MS SQL ManagementStudio, прикрутил её к DataGrid и для удобства добавил ещё BindingNavigator. В таблице есть некоторые данные, мне надо сделать банальные вещи:
- удалить строку
- изменить строку
И вот именно это никак не удаётся.

Пробовал вот так:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
private void btn_exit_Click(object sender, EventArgs e)
        {
            try
            {
                this.Validate();
                this.namesBindingSource.EndEdit();
 
                SqlDataAdapter adapter = new SqlDataAdapter();
 
                // Create the DeleteCommand.
                SqlCommand command = new SqlCommand("DELETE FROM names WHERE id = @id", conn);
 
                // Add the parameters for the DeleteCommand.
                SqlParameter parameter = command.Parameters.Add("@id", SqlDbType.NChar, 5, "id");
                parameter.SourceVersion = DataRowVersion.Original;
                adapter.DeleteCommand = command;
 
                this.namesAdapter.Update(this.personalDataSet);
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.ToString());
            }
        }
не работает, на 18 строке пишет для обновления требуется действительный DeleteCommand


потом нашёл в конструкторе наборов данных параметры для TableAdapter, выставил там для DeleteCommand запрос типа:
SQL
1
DELETE FROM names WHERE id = @id
тоже не заработало, написал что <в параметризированном запросе не определён параметр "@id">, а как определить какую именно строку я хочу удалить? Без условия всё работает, но удаляются все строки.

Объясните пожалуйста.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
18.03.2010, 14:24
Ответы с готовыми решениями:

Удаление/Восстановление строк в DataGrid
С помощью этого кода обнуляю все строки в DataGrid pBDataSet.Tab1.Clear(); Вопрос, а как теперь их вернуть назад? У меня checkBox при...

Добавление, изменение и удаление строк dataGridView
Добрый вечер, форумчане. Помогите пожалуйста, кто сможет. Ситуация такая: есть форма с объектом dataGridView, которая отображает содержимое...

Удаление строк в DataGrid
При удалении строки в DataGrid, привязанному к Adodc c Recordsource = select PASP610_IZOL.nompor,PASP610_IZOL.tip_izol,TRSPR.name from...

8
Комбайнёр
 Аватар для MAcK
1606 / 704 / 77
Регистрация: 27.05.2008
Сообщений: 2,535
18.03.2010, 15:01
Книга: Сеппа "Ado.Net"
0
0 / 0 / 0
Регистрация: 18.03.2010
Сообщений: 4
18.03.2010, 15:06  [ТС]
Цитата Сообщение от MAcK Посмотреть сообщение
Книга: Сеппа "Ado.Net"
За ссылку на книгу, она у меня есть, но вот читать её от корки до корки я не буду, выборочно читал, перечитал MSDN, там сказано что надо в адаптере прописать DeleteCommand, UpdateCommand, что я собственно говоря и делаю. Но не работает, так что будьте добры - укажите где ошибка и куда копать?
0
124 / 106 / 7
Регистрация: 14.02.2010
Сообщений: 263
18.03.2010, 16:02
TableMapping, видимо, надо прописать.
0
0 / 0 / 0
Регистрация: 18.03.2010
Сообщений: 4
18.03.2010, 16:40  [ТС]
Цитата Сообщение от serg42 Посмотреть сообщение
TableMapping, видимо, надо прописать.
А можно пример, как именно попробовал так, но не получилось:

C#
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
30
31
32
                // настраиваем DataAdapter
                SqlDataAdapter da = new SqlDataAdapter();
                da.SelectCommand = conn.CreateCommand();
                da.SelectCommand.CommandText = "select * from names where id=@id ";
 
                da.InsertCommand = conn.CreateCommand();
                da.InsertCommand.CommandText = "insert into names (id, FirstName, LastName, Brithdate) values (@id, @FirstName, @LastName, @Brithdate)";
 
                da.UpdateCommand = conn.CreateCommand();
                da.UpdateCommand.CommandText = "update names set FirstName=@FirstName, LastName=@LastName, Brithdate=@Brithdate where id=@id";
 
                da.DeleteCommand = conn.CreateCommand();
                da.DeleteCommand.CommandText = "delete from names where id=@id";
                
               DataSet ds = new DataSet();
 
               // описываем сопоставление 
               DataColumnMapping[] dcm = {
               new DataColumnMapping("FirstName", "FirstName"),
               new DataColumnMapping("LastName",  "LastName"), 
               new DataColumnMapping("Brithdate", "Brithdate") 
               };
 
               DataTableMapping dtm = new DataTableMapping("DataTable", "names", dcm);
               da.TableMappings.Clear();
               da.TableMappings.Add(dtm);
               da.Fill(ds, "names");
               dataGridView1.DataSource = ds;
               dataGridView1.DataMember = "names";
 
               da.Update(ds, "names"); //Применяем изменения в DataSet. Изменения в БД не заносятся! Используется сопоставленное имя таблицы.
               ds.AcceptChanges(); // заносим изменения в базу данных
0
Комбайнёр
 Аватар для MAcK
1606 / 704 / 77
Регистрация: 27.05.2008
Сообщений: 2,535
19.03.2010, 08:20
Сделайте адаптер, датасет и биндингсоурсы через визуальные средства студии, если хотите разобраться, то посмотрите как она создала все эти команды.
Рассказать как делать через студию?
0
0 / 0 / 0
Регистрация: 18.03.2010
Сообщений: 4
19.03.2010, 09:40  [ТС]
Цитата Сообщение от MAcK Посмотреть сообщение
Сделайте адаптер, датасет и биндингсоурсы через визуальные средства студии, если хотите разобраться, то посмотрите как она создала все эти команды.
Рассказать как делать через студию?
Дык я изначально через студию всё и делал. Меня интересует единственный вопрос, как прикрутить возможность удаления(изменения строк) в DataGrid с сабмитом изменений в БД.
0
Комбайнёр
 Аватар для MAcK
1606 / 704 / 77
Регистрация: 27.05.2008
Сообщений: 2,535
19.03.2010, 10:07
Adapter.Update([Dateset]);
Adapter.Update([Dateset.TableName]);
0
17 / 17 / 3
Регистрация: 17.02.2010
Сообщений: 211
19.03.2010, 13:45
Вот приведу из своей проги кусок кода, обновить и удалить запись:

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
 // Сохранение внесенных изменений таблицы "Uchastok"
            if (gshoUchDataSet.HasChanges())
                try
                {
                    DataWizardMDB.gshoUchDataSet.UchastokDataTable tab = (DataWizardMDB.gshoUchDataSet.UchastokDataTable)gshoUchDataSet.GetChanges().Tables[0];
                    uchastokTableAdapter.Update(tab);
                    gshoDataSet.AcceptChanges();
                    //dsProviders1.AcceptChanges();
                }
                catch (Exception ex)
                {
                    MessageBox.Show(ex.Message, "Неудачное обновление", MessageBoxButtons.OK, MessageBoxIcon.Error);
                }
            else
                MessageBox.Show("Нет записей для изменения", "Изменение записей", MessageBoxButtons.OK, MessageBoxIcon.Information);
        }
 
        private void btnRemove_Click(object sender, EventArgs e)
        {
            //Удаление строки из таблицы "Uchastok"
            if (cmRecords.Count > 0) cmRecords.RemoveAt(cmRecords.Position);
            else MessageBox.Show("Нет записи для удаления!", "Удаление записи",MessageBoxButtons.OK, MessageBoxIcon.Error);
        }
база на MySql. Надеюсь єтого будет достаточно
Удачи.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
19.03.2010, 13:45
Помогаю со студенческими работами здесь

Добавление, сохранение и удаление строк в DataGrid
Как можно сделать чтоб в datagrid через кнопку можно было удалить выделенную строку или определенный столбец? Как еще можно сделать в...

Изменение и удаление строк бд php
&lt;? $conect=mysql_connect(&quot;localhost&quot;,&quot;root&quot;,&quot;&quot;)or die(mysql_error()); mysql_select_db(&quot;doc&quot;); if(isset($_POST)) { $updat=&quot;UPDATE...

Удаление, изменение, добавление строк в DBGrid
Всем здравствуйте!!! Помогите разобраться Дано: Форма с DBGrid которая отображает одну из четырех таблиц из базы данных Access с...

Удаление и изменение строк в sqlite (применяя sqlite3)
Здравствуйте, я в тупике, поэтому хочу обратиться к вам за помощью. в кратце расскажу о моем скрипте. Скрипт синхронизации json с бд...

Изменение ObservableCollection: автоматическое изменение свойства при изменении в DataGrid
Здравствуйте. Имеется коллекция на 35 параметров. Значения 2 главных параметров складываются из определенных сумм остальных. Вывожу...


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

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Новые блоги и статьи
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net REST сервисы временно не работают, только через Web. Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
Модель сукцессии микоризы
anaschu 24.01.2026
Решили писать научную статью с неким РОманом
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь(не выше 3-го порядка) постоянного тока с элементами R, L, C, k(ключ), U, E, J. Программа находит переходные токи и напряжения на элементах схемы классическим методом(1 и 2 з-ны. . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru