Форум программистов, компьютерный форум, киберфорум
C#: Базы данных
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.76/91: Рейтинг темы: голосов - 91, средняя оценка - 4.76
25 / 14 / 3
Регистрация: 01.12.2010
Сообщений: 69
.NET 4.x

Сохранить изменения dataset

07.12.2010, 10:17. Показов 18953. Ответов 16
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Есть такой вопрос от полного новичка. Как сохранить изменения в базу данных из dataset?
Среда Visual Studio 2010.
В visual c# создаю базу данных , dataset и кидаю datagrid на форму.

При всавке datagrid на форму имеем сгенерированный код при нажатии на кнопку сохранить:

C#
1
2
3
this.Validate();
this.nameBindingSource.EndEdit();
this.tableAdapterManager.UpdateAll(this.personalDa taSet);
Данные отображаются, но после редактирования\добавления - в источнике никаких изменений.

Чего тут нехватает?


nameTableAdapter.Update(personalDataSet. Name) - не помогает.
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
07.12.2010, 10:17
Ответы с готовыми решениями:

Как сохранить изменения dataset в БД
Изменения сохраняются в dataset, а как сделать чтобы изменения сохранялись напрямую в БД? Нашел ответ на форуме, но не пойму где изменить...

Сохранить DataSet обратно в БД
Заполняю DataSet из файла Access: DBAdapter = new OleDbDataAdapter(commandText, oleConnection); DBAdapter.Fill(DBSet, "table1"); ...

Как сохранить данные из dataSet в БД?
Здравствуйте! Создал приложение с базой данных, и при сохранении: this.Validate(); ...

16
 Аватар для Terion
271 / 203 / 13
Регистрация: 18.06.2010
Сообщений: 491
07.12.2010, 11:37
не хватает
C#
1
this.personalDataSet.AcceptChanges()
после this.nameBindingSource.EndEdit();
0
25 / 14 / 3
Регистрация: 01.12.2010
Сообщений: 69
11.12.2010, 13:43  [ТС]
не помогло.

В Visual Studio 2010 походу какие-то изменения в этом отношении.
0
644 / 198 / 5
Регистрация: 24.07.2010
Сообщений: 1,315
12.12.2010, 07:00
Все нормально должно быть, иногда косячит эта штука, я щас тож с базой работаю, у меня там на сохранении такой же коди работает, может в updateAll что-то не то стоит проверь
0
25 / 14 / 3
Регистрация: 01.12.2010
Сообщений: 69
12.12.2010, 23:40  [ТС]
C#
1
2
3
4
this.Validate();
this.table1BindingSource.EndEdit();
database1DataSet.AcceptChanges();
this.tableAdapterManager.UpdateAll(this.database1DataSet);
Странно ,что вообще что-то менять надо. Создаю ведь пустой проект, БД с одной таблицой, dataset, DataGridView с предустановками. Кода сам не пишу и всё равно не работает.

Попробую немного уточнить ситуацию . После добавления строки и сохранения , закрываю форму, потом открываю и добавленая строка видна !
Но, если нажать кнопку сохранить проект и потом запустить приложение, то изменений уже нет.
Если смотреть состояние Sql источника, то там строка не добавляется никогда.

Чтобы это могло значить? msdn уже вдоль и поперёк перелазил, ничего так и не нашол, чтобы помогло.
0
 Аватар для nio
6050 / 3460 / 336
Регистрация: 14.06.2009
Сообщений: 8,136
Записей в блоге: 2
13.12.2010, 06:26
Цитата Сообщение от RealPirate Посмотреть сообщение
Попробую немного уточнить ситуацию . После добавления строки и сохранения , закрываю форму, потом открываю и добавленая строка видна !
Но, если нажать кнопку сохранить проект и потом запустить приложение, то изменений уже нет.
С формой все понятно, но что ты понимаешь под "проектом"?
Цитата Сообщение от RealPirate Посмотреть сообщение
Данные отображаются, но после редактирования\добавления - в источнике никаких изменений.
Чего тут нехватает?
Ты добавил данные в dataGridView, сохранил изменения в БД. Что еще ты хочешь увидеть? и где?

Цитата Сообщение от RealPirate Посмотреть сообщение
nameTableAdapter.Update(personalDataSet. Name) - не помогает.
Всегда только так и делаю все превосходно работает

Добавлено через 2 минуты
C#
1
2
this.nameBindingSource.EndEdit();
nameTableAdapter.Update(personalDataSet.Name);
Больше ничего....
0
644 / 198 / 5
Регистрация: 24.07.2010
Сообщений: 1,315
13.12.2010, 07:54
Странно, но правда может быть дело в том что студия может не сразу добавлять данные в базу а по истечении некоторого времени,попробуй в этом направлении порыть
0
 Аватар для nio
6050 / 3460 / 336
Регистрация: 14.06.2009
Сообщений: 8,136
Записей в блоге: 2
13.12.2010, 08:01
Цитата Сообщение от 23Alex24 Посмотреть сообщение
может быть дело в том что студия может не сразу добавлять данные в базу а по истечении некоторого времени
объясни, при чем тут студия?
0
644 / 198 / 5
Регистрация: 24.07.2010
Сообщений: 1,315
13.12.2010, 08:18
При том что мы из студии же осуществляем подключение, она может накапливать измененные данные и только потом их разом добавлять/обновлять в базе. Но странно что после UpdateAll не получилось сразу)

А ты один раз переносил datagridview на форму или удалял ее и опять кидал туда же?
0
 Аватар для nio
6050 / 3460 / 336
Регистрация: 14.06.2009
Сообщений: 8,136
Записей в блоге: 2
13.12.2010, 08:31
23Alex24, я до сих пор не понимаю, что вы привязались к этой студии, пользователь должен не со студией работать, а с приложением. Какая разница, когда студия сохраняет данные? Важно как их сохраняет приложение. Зачем придумывать механизм сохранения данных в студии? Вы что каждому пользователю собрались студию ставить?
Танцы с бубном.....
0
644 / 198 / 5
Регистрация: 24.07.2010
Сообщений: 1,315
13.12.2010, 09:14
А приложение на чем пишется? на листке ручкой чтоли? И фсе возможности реализованы не приложением вашим а средой разработки вообще то)

Добавлено через 10 минут
Попробуй удалить таблицу и всякие там BindingSource-ы, TableAdapter-ы,BindingNavigator-ы и добавить заного, и проконтролируй чтобы правильно ссылки стояли на источник данных в BindingSource
0
25 / 14 / 3
Регистрация: 01.12.2010
Сообщений: 69
13.12.2010, 12:32  [ТС]
Цитата Сообщение от 23Alex24 Посмотреть сообщение
Странно, но правда может быть дело в том что студия может не сразу добавлять данные в базу а по истечении некоторого времени,попробуй в этом направлении порыть
Да, но если я публикую своё приложение, тоесть имею дело уже с .exe файлом всё тоже самое остаётся.

Цитата Сообщение от nio Посмотреть сообщение
С формой все понятно, но что ты понимаешь под "проектом"?
файл => создать => проект => C# => приложение windows forms

Цитата Сообщение от nio Посмотреть сообщение
Ты добавил данные в dataGridView, сохранил изменения в БД. Что еще ты хочешь увидеть? и где?
В том, то и дело ,что изменения только в dataset.

В БД, то как раз изменений и нет. Я бы хотел нажать на таблицу БД ПКМ => показать таблицу данных
и увидеть там добавленные данные.
Но там или пусто или только те данные, что я сам вручную ,там же и вписал.

Пробую, опять всё заново, без bindingSourse, navigator. Пишу код сам:

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
Database1DataSet.Table1Row newRow = database1DataSet.Table1.NewTable1Row();
 
newRow.ID = int.Parse(textBox1.Text);
newRow.name = textBox2.Text;
newRow.number = int.Parse(textBox3.Text);            
 
MessageBox.Show(newRow.RowState.ToString());                   //  Detached
database1DataSet.Table1.AddTable1Row(newRow);
           
//// database1DataSet.AcceptChanges();                                 
MessageBox.Show(newRow.RowState.ToString());                   // Added
            
int rowsAffected = table1TableAdapter.Update(database1DataSet.Table1);
MessageBox.Show(newRow.RowState.ToString());                   // Unchanged
            
label4.Text = rowsAffected.ToString();
// 1 (Если включаю AcceptChanges(), то 0, но результат тот же)


Добавил сам comboBox, после нажатия кнопки добавить в нём сразу же видны изменения. Как только закрываю=> открываю форму - та же шляпа . БД всё это время как будто непричём - там остаётся всё как было - то есть пусто.
0
 Аватар для nio
6050 / 3460 / 336
Регистрация: 14.06.2009
Сообщений: 8,136
Записей в блоге: 2
13.12.2010, 15:36
RealPirate, попробуй полностью создать подключение вручную, создать запрос и выполнить его без всяких DataSet и адаптеров.
А по поводу твоего кода есть у меня какое-то чуство, что оно отправляет данные в какую-то другую БД, не ту, что ты смотришь. Хотелось бы взглянуть на строку подключения и запросы обновления.
0
25 / 14 / 3
Регистрация: 01.12.2010
Сообщений: 69
14.12.2010, 12:45  [ТС]
Вроде всё нормально выглядит, но я в sql запросах не силён

SQL
1
2
3
4
5
6
7
8
9
10
11
DATA SOURCE=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|\Database1.mdf;
Integrated Security=TRUE;USER Instance=TRUE
 
UPDATE [dbo].[Table1] SET [ID] = @ID, [name] = @name, [NUMBER] = @NUMBER 
WHERE (([ID] = @Original_ID) AND ((@IsNull_name = 1 AND [name] IS NULL) 
OR ([name] = @Original_name)) AND ((@IsNull_number = 1 AND [NUMBER] IS NULL)
OR ([NUMBER] = @Original_number)));
SELECT ID, name, NUMBER FROM Table1 WHERE (ID = @ID)
 
INSERT INTO [dbo].[Table1] ([ID], [name], [NUMBER]) VALUES (@ID, @name, @NUMBER);
SELECT ID, name, NUMBER FROM Table1 WHERE (ID = @ID)
И так далее. я там ничего не менял. База Данных в самом деле называется Database1.mdf и такой файл имеется в папке проекта. Список вероятных ошибок сужается?
0
 Аватар для nio
6050 / 3460 / 336
Регистрация: 14.06.2009
Сообщений: 8,136
Записей в блоге: 2
14.12.2010, 18:05
попробуй подключить БД к СУБД, а не использовать физический адрес. И как ранее говорил, пробуй подключение вручную.

Цитата Сообщение от RealPirate Посмотреть сообщение
Список вероятных ошибок сужается?
Сам я с 2010 студией не работал, но некоторые говорят, что слегка сыровата она, глюкает игногда.... думай сам
0
25 / 14 / 3
Регистрация: 01.12.2010
Сообщений: 69
11.07.2011, 17:52  [ТС]
Лучший ответ Сообщение было отмечено как решение

Решение

Спустя некоторе время решение было найдено и поясню в чём было дело для тех, кто столкнётся с проблемой не сохраняющихся данных в режиме дизайна приложения.

Настройки файла базы данных (например файл MyDatabase.sdf) содержат свойства
  • Действие при построении
  • Копировать в выходной каталог - здесь должно стоять значение: Не копировать
В случае если стоит значение: "Всегда копировать" или "Копировать если новее" база данных при новом запуске будет заменяться на новую, в которой уже не будет изменений внесённых динамически.

Правда, приходится файл базы данных копировать из папки приложения в папку Debug и Release вручную, каждый раз когда вы решите изменить структуру базы. Зато все данные которые вы внесли в базу сохранятся!!!

Да, и не удивительно, что asp.netчики удивлённо разводили руками, при описании проблемы, ведь там механизм запуска другой и подобные операции производить не надо. Вся эта ерунда относится только к WinForms WPF и т.д.
6
26 / 26 / 15
Регистрация: 20.10.2012
Сообщений: 180
15.12.2013, 16:32
RealPirate, где поменять эти настройки файла базы данных ?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
15.12.2013, 16:32
Помогаю со студенческими работами здесь

Сохранить измененные данные из DataGridView в DataSet
Подключил источник данных к DataGridView Название_ТаблицыBindingSource, в нем есть 4 записи. Добавил несколько новых записей. И наткнулся...

Как сохранить данные в DataSourse из DataSet'a
Суть в чем. У меня есть набор таблиц *.dbf. Я подключаюсь через OleDb к папке с таблицами(DataSourse). В самой программе у меня есть...

SQLite: в Dataset изменения есть, а в самой базе не сохраняются
имеется вот такой код : SQLiteFactory factory = (SQLiteFactory)DbProviderFactories.GetFactory("System.Data.SQLite"); ...

Как обновить dataset после изменения структуры базы данных сервере sql
Здравствуйте, пишу приложение на c#. Подключаюсь к базе данных через сервер ms sql. Допустим есть таблица rabochie с полями(Имя, Фамилия,...

Сохранить изменения в БД
у меня есть таблица , как сделать что бы при редактирование информация сохранялась??? Me.КнигаTableAdapter.Update- везде нахожу это ,...


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

Или воспользуйтесь поиском по форуму:
17
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru