Форум программистов, компьютерный форум, киберфорум
Наши страницы
C#: Базы данных, ADO.NET
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.71/7: Рейтинг темы: голосов - 7, средняя оценка - 4.71
Plum_Boom
0 / 0 / 0
Регистрация: 23.10.2013
Сообщений: 10
1

Добавленные данные не сохраняются в БД

15.04.2014, 13:55. Просмотров 1418. Ответов 18
Метки нет (Все метки)

Возникла проблема, есть небольшая база данных на MS Access, база хранится на сетевом диске. Изначально база пустая, при добавлении записи, на форме строка отображается в dataGridView, после закрытия формы и повторного открытия, таблица так и остается пустой. В dataGridView также записей нет
Код добавления новой строки:
C#
1
2
3
4
5
DataTable dtList = this.contactDataSet.Spisok;
DataRow str = dtList.NewRow();
str["Name"] = NameTxt.Text;
str["Phone"] = NumbTxt.Text;
dtList.Rows.Add(str);
компилятор ошибок не выдает
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
15.04.2014, 13:55
Ответы с готовыми решениями:

Добавленные данные не сохраняются в БД
Всем привет, помогите решить проблему. При создании базы данных, после выхода из программы не...

MS SQL: добавленные данные в таблице не отображаются
Доброго дня суток. Попытаюсь описать всю соль ситуации. Имеется файл базы данных MSSQL (Abonent),...

Пропадают данные добавленные через bindingNavigator
Подскажите,нужно с помощью bindingNavigator добавить данные в таблицу Данные...

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

В FastReport не отображаются данные, измененные или добавленные в процессе работы программы
Кинул на форму отчет(FastReport.NET 1.8.40) связал его с таблице с бд через визуальные контролы -...

18
nmcf
6525 / 5749 / 2621
Регистрация: 14.04.2014
Сообщений: 24,493
15.04.2014, 16:42 2
Смотри DataAdapter и Update()
1
Plum_Boom
0 / 0 / 0
Регистрация: 23.10.2013
Сообщений: 10
16.04.2014, 06:25  [ТС] 3
погуглил, не нашел внятного объяснения про DataAdapter и Update(), можно по подробнее про них пожалуйста, я в C# начинающий.
Заранее спасибо
0
nmcf
6525 / 5749 / 2621
Регистрация: 14.04.2014
Сообщений: 24,493
16.04.2014, 08:46 4
DataTable сам по себе не умеет считывать/записывать данные. Стандартно это делает DataAdapter, у которого есть функция Update(). Его нужно создать, если всё программируется вручную. Если же используются визуальные средства VS для подключения к базе (база включена в проект), то там DataAdapter создаётся автоматически для каждой таблицы.
1
Plum_Boom
0 / 0 / 0
Регистрация: 23.10.2013
Сообщений: 10
18.04.2014, 10:36  [ТС] 5
спасибо большое, разобрался. Еще решил полностью вынести запись в базу на отдельную кнопку,получилось вот так:
C#
1
2
            spisokTableAdapter.Insert(NameTxt.Text, NumbTxt.Text);
            spisokTableAdapter.Update(contactDataSet.Spisok);
только теперь почему то база не обновляется сразу, данные видно только после перезапуска

Добавлено через 35 минут
разобрался, обновляет

Добавлено через 7 минут
следующий вопрос, как сделать удаление выделенной строки?

 Комментарий модератора 
На будущее: одна тема - один вопрос
0
nmcf
6525 / 5749 / 2621
Регистрация: 14.04.2014
Сообщений: 24,493
18.04.2014, 10:52 6
В чём строки отображаются? Если в DataGridView, то он сам умеет удалять. Выделяешь строку мышью и жмёшь Del.
0
Plum_Boom
0 / 0 / 0
Регистрация: 23.10.2013
Сообщений: 10
18.04.2014, 10:55  [ТС] 7
это я знаю, из базы только при этом не удаляется запись, а мне надо чтобы из базы тоже удалялась.
по идее должно быть вот так
C#
1
spisokTableAdapter.Delete();
но вот как тут объяснить, что мне нужна именно выделенная строка а не первая попавшаяся
0
nmcf
6525 / 5749 / 2621
Регистрация: 14.04.2014
Сообщений: 24,493
18.04.2014, 10:57 8
Всё через Update(), если редактируешь в DataGridView.
0
Plum_Boom
0 / 0 / 0
Регистрация: 23.10.2013
Сообщений: 10
18.04.2014, 11:04  [ТС] 9
т.е. удалять вручную и потом вызывать Update()? но если я правильно понял, тогда Update придется вешать на закрытие формы
0
nio
5969 / 3375 / 335
Регистрация: 14.06.2009
Сообщений: 8,136
Записей в блоге: 2
18.04.2014, 11:08 10
Цитата Сообщение от Plum_Boom Посмотреть сообщение
Update придется вешать на закрытие формы
или на кнопку "Сохранить изменения"
0
nmcf
6525 / 5749 / 2621
Регистрация: 14.04.2014
Сообщений: 24,493
18.04.2014, 11:10 11
Попробуй приделать Update к событию DataGridView "RowsRemoved".
0
nio
5969 / 3375 / 335
Регистрация: 14.06.2009
Сообщений: 8,136
Записей в блоге: 2
18.04.2014, 11:45 12
Я бы вообще не стал делать Update в базу после каждого чиха.

Я обычно делаю так: пользователь получает данные и корректирует их (локально). Когда все манипуляции (добавления, редактирование, удаления) сделаны, пользователь жмёт кнопку "Сохранить", которая вызывает метод Update. Также на закрытие формы повешен обработчик, который проверяет, были изменены какие-нибудь данные или нет. Если изменения были, пользователю выдается сообщение об этом с вариантами сохранить (тогда вызывается Update) или игнорировать. При попытке обновления срабатывает аналогичный обработчик
0
Plum_Boom
0 / 0 / 0
Регистрация: 23.10.2013
Сообщений: 10
18.04.2014, 14:42  [ТС] 13
C#
1
2
3
4
5
if (this.dataGridView1.SelectedRows.Count > 0)
            {
                this.dataGridView1.Rows.RemoveAt(this.dataGridView1.SelectedRows[0].Index);
                spisokTableAdapter.Update(this.contactDataSet.Spisok);
            }
нашел вот такое решение, удаление вынесено на отдельную кнопку на форме, перед эти только надо выставить SelectionMode = FullRowSelect у datagridView.
Я обычно делаю так: пользователь получает данные и корректирует их (локально). Когда все манипуляции (добавления, редактирование, удаления) сделаны, пользователь жмёт кнопку "Сохранить", которая вызывает метод Update. Также на закрытие формы повешен обработчик, который проверяет, были изменены какие-нибудь данные или нет. Если изменения были, пользователю выдается сообщение об этом с вариантами сохранить (тогда вызывается Update) или игнорировать. При попытке обновления срабатывает аналогичный обработчик
я пока только учусь, но за совет спасибо, учту на будущее
0
nmcf
6525 / 5749 / 2621
Регистрация: 14.04.2014
Сообщений: 24,493
18.04.2014, 15:10 14
Не понял для чего тебе этот кусок. Функционал удаления из DataGridView реализован в нём изначально. После того как пользователь удалит строки, нужно просто дать команду Update(). К кнопке привязать, к событию или к моменту завершения программы как писал nio.
0
Plum_Boom
0 / 0 / 0
Регистрация: 23.10.2013
Сообщений: 10
20.04.2014, 07:30  [ТС] 15
юзерфрендли интерфейс, пользователю понятнее будет когда он видит реальную кнопку
0
nmcf
6525 / 5749 / 2621
Регистрация: 14.04.2014
Сообщений: 24,493
20.04.2014, 08:41 16
Тогда тебе нужен цикл на случай, если выделено сразу несколько строк.
0
Plum_Boom
0 / 0 / 0
Регистрация: 23.10.2013
Сообщений: 10
21.04.2014, 08:41  [ТС] 17
foreach и понеслась:-)

Добавлено через 55 секунд
че то туплю, понедельник утро все таки, как вернуть коллекцию строк из datagridview?
0
nio
5969 / 3375 / 335
Регистрация: 14.06.2009
Сообщений: 8,136
Записей в блоге: 2
21.04.2014, 09:38 18
Цитата Сообщение от Plum_Boom Посмотреть сообщение
туплю, понедельник утро все таки, как вернуть коллекцию строк из datagridview?
не тупи. dataGridView1.Rows
0
Plum_Boom
0 / 0 / 0
Регистрация: 23.10.2013
Сообщений: 10
21.04.2014, 09:40  [ТС] 19
а все... сообразил =)
вот так получилось
C#
1
2
3
4
5
6
7
8
if (this.dataGridView1.SelectedRows.Count > 0)
            {
                foreach (DataGridViewRow r in dataGridView1.SelectedRows)
                {
                    this.dataGridView1.Rows.RemoveAt(this.dataGridView1.SelectedRows[0].Index);
                }
            }
            spisokTableAdapter.Update(this.contactDataSet.Spisok);
0
21.04.2014, 09:40
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
21.04.2014, 09:40

Не сохраняются данные в БД
Здравствуйте! Пишу приложение для КПК - база данных. При добавлении записей они не сохраняются в...

Не сохраняются данные в БД
SqlConnection sqlcon = new SqlConnection(connect); try { ...

Не сохраняются данные в БД
При подключении БД Access просит создать копию БД нажимаю да. Когда начинаю заполнять форму данные...


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

Или воспользуйтесь поиском по форуму:
19
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru