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

Как сделать, чтобы изменения из dataGridView сохранялись в БД

26.02.2012, 06:54. Просмотров 2437. Ответов 10
Метки нет (Все метки)

Приветствую, подскажите новичку в такой проблемме. Есть таблица в бд, на форме создаю грид указываю источник данных, пишу строку соеденения, в гриде появляется информация всё хорошо.
Как теперь сделать так, чтобы все изменения из грида сохранялись в БД и это происходило незаметно для пользователя
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
26.02.2012, 06:54
Ответы с готовыми решениями:

Сериализация/десериализация Xml, как сделать чтобы изменения вступили в силу
Возникла проблема: сохраняю датасет в xml файл-успешно сохранен, изменяю бд, считываю этот файл,...

Как сделать чтобы ячейка DataGridView не редактировалась
Привет всем!Как сделать чтобы ячейка DataGridView не редактировалась вообще?В свойствах...

Как сделать, чтобы одинаковые поля не добавлялись в dataGridView
Данные вводятся через textbox. К примеру в dataGridView уже есть такое значение, и при добавлении...

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

Как сделать, чтобы изображения сохранялись в правильном типе?
Сделал на сайте систему аватаров. Но Gif и png изображения модифицируются в jpg - прозрачность и...

10
DimanRu
691 / 683 / 167
Регистрация: 15.06.2011
Сообщений: 1,702
26.02.2012, 11:06 2
Сам не пробовал, но есть такой пример в книге:
C#
1
2
3
SqlDataAdapter dataAdapter;
 
dataAdapter.Update((DataTable)dataGridView.DataSource);
0
White Luna
32 / 26 / 2
Регистрация: 08.09.2010
Сообщений: 402
26.02.2012, 11:18 3
есть книжка "РАБОТА С БАЗАМИ ДАННЫХ НА ЯЗЫКЕ C# ТЕХНОЛОГИЯ ADO .NET" авторы О. Н. Евсеева
А. Б.Шамшев там этот раздел подробно с примерами рассмотрен
и там все автоматически делается

Добавлено через 8 минут
если надо пишите в личку электронку кину книжку она у меня есть в PDF формате
2
BEN.917
0 / 0 / 0
Регистрация: 26.02.2012
Сообщений: 7
01.03.2012, 15:30  [ТС] 4
Спасибо за подсказку литературы, там предложен вот такой метод
C#
1
ИмяТаблициTableAdapter.Update(bazaDataSet2.ИмяТаблици)
Привязал к событию закрытия формы происходит следующее: Запускаю дебагер, пишу новую строку, закрываю дебагер, запускаю дебагер и о чудо строка на месте). Закрываю проэкт, открываю проэкт, строки нету. В базе не сохраняется.

DimanRu, с вашим вариантом не разобрался.
0
_katon_
385 / 241 / 20
Регистрация: 03.10.2011
Сообщений: 1,003
01.03.2012, 15:40 5
Цитата Сообщение от DimanRu Посмотреть сообщение
dataAdapter.Update((DataTable)dataGridView.DataSource);
и
Цитата Сообщение от BEN.917 Посмотреть сообщение
ИмяТаблициTableAdapter.Update(bazaDataSet2.ИмяТаблици)
отличия только в том что вызываются различные перегрузки метода Update();
Если строка не обновляется в базе, то данные из DataTable не передаются в БД. Я использовал всегда только передачу Dataset и пока у меня проблем не было.
0
BEN.917
0 / 0 / 0
Регистрация: 26.02.2012
Сообщений: 7
01.03.2012, 16:05  [ТС] 6
Можно поподробнее про передачу Dataset?
0
_katon_
385 / 241 / 20
Регистрация: 03.10.2011
Сообщений: 1,003
01.03.2012, 16:47 7
Если ты используешь редактируемый грид, то тебе нужно будет обеспечить передачу данных из DataGridViwe в связанный с ним DataTable (к сожалению не знаю как это сделать до сих пор не разобрался))) )

Если в грид данные добавляешь через спец карточки, то писать строку можно прямо в коллекцию Rows объект DataTable (т.е. минуя грид) (я делал всегда так).

Я не в курсе, что тебе известно! Но так на вскидку разобраться с методикой работы над объектами поможет вот эта ссылочка (класс Dataset): http://msdn.microsoft.com/ru-ru/libr...a.dataset.aspx . Там в самом низу странички код, по которому можно определить последовательность создания объектов, а также разобраться со способом "ручного" добавления строк в DataTable.

Как только у тебя все это получится можешь на msdn изучить перегрузку метода Update для класса DataTableAdapter.
0
SergKr
65 / 39 / 3
Регистрация: 07.12.2010
Сообщений: 327
01.03.2012, 19:35 8
Вот у меня так сохраняет (пример из книжки):
vb.net
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
    Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
        DataGridView1.Rows(1).Cells(1).Value = "УРАААА"
 
        COMMAND.CommandText = "UPDATE [БД телефонов] SET [Но" &
            "мер телефона] = ?, ФИО = ? WHERE ([Номер п/п] = ?)"
        COMMAND.Parameters.Add("Номер телефона", OleDbType.VarWChar,
                              50, "Номер телефона")
        COMMAND.Parameters.Add("ФИО", OleDbType.VarWChar, 50, "ФИО")
        COMMAND.Parameters.Add(New OleDbParameter("Original_Номер_п_п",
                                                 OleDbType.Integer, 0, System.Data.ParameterDirection.Input,
                                                 False, CType(0, Byte), CType(0, Byte), "Номер п/п",
                                                 System.Data.DataRowVersion.Original, Nothing))
        DA.UpdateCommand = COMMAND
        COMMAND.connection = CO
        Try
            Dim kol As Integer = DA.Update(DS, "БД телефонов")
            MessageBox.Show("Обновлено " & kol & " записей")
        Catch ex As Exception
            MessageBox.Show(ex.Message, "Недоразумение")
        End Try
 
    End Sub
0
BEN.917
0 / 0 / 0
Регистрация: 26.02.2012
Сообщений: 7
06.03.2012, 11:23  [ТС] 9
Всё, проблемма решена. Вот код для добовления новой строки в существующую SQL базу
C#
1
2
3
4
5
6
7
string connectionString = @"";            
SqlConnection conn = new SqlConnection(connectionString);
conn.Open();
SqlCommand myCommand = conn.CreateCommand();           
myCommand.CommandText =   "INSERT INTO ИМЯ БД (Имена столбцов) VALUES (Значения)";
myCommand.ExecuteNonQuery();
conn.Close();
SergKr, В вашем коде так и не разобрался, понял только что это для акцес базы.
0
NowMatrix
96 / 79 / 16
Регистрация: 14.01.2011
Сообщений: 438
07.03.2012, 01:05 10
Вот так с помощью адаптера можно сохранить данные,допустим есть таблица supply:
C#
1
2
3
this.Validate();
            this.supplyBindingSource.EndEdit();
            this.supplyTableAdapter.Update(общаяDataSet.Supply);
Но прикол в том (я до этого долго доходил и на просторах интернета не нашёл),когда делаешь обновление таким образом,то всё нормально,данные появляются в таблице (работал в Access). Но если каким либо образом изменишь код программы,даже если тупо объявишь переменную и запустишь проект заново,то данные исчезнут. А если изменений не вносить,то всё нормально работает.
0
BEN.917
0 / 0 / 0
Регистрация: 26.02.2012
Сообщений: 7
07.03.2012, 04:05  [ТС] 11
Данные проподают потому-что изменения происходят не в самой базе, а копии с которой работает шарп. Я делал что-то подобное, коректно работает на добовление, если изменить строку то вывалится в ошибку и скажет что нужен толи коректный толи настоящий апдейт. Для изменений в самой базе нужно отправлять sql запросы, тут самое противное описать все эвенты что-бы отлавливалось не только добовление и удаление но и изменение строк
0
07.03.2012, 04:05
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
07.03.2012, 04:05

Как сделать, чтобы данные, введенные в EditText, сохранялись и пополнялись в новом активити?
как сделать что бы данные введенные в EditText сохранялись и пополнялись в новом активити... ...

Как сделать, чтобы открытые из IE mp3 открывались не Windows Media Player, а сохранялись на компьютер?
Здравствуйте. Сестра принципиальная сторонница Internet Explorer, поэтому ищу способ, при...

Как сделать, чтобы при обновлении приложения в Google Play сохранялись пользовательские настройки и данные
Как сделать, чтобы при обновлении приложения в Google Play сохранялись пользовательские настройки и...


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

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

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