С Новым годом! Форум программистов, компьютерный форум, киберфорум
C#: Базы данных
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.59/32: Рейтинг темы: голосов - 32, средняя оценка - 4.59
1 / 1 / 0
Регистрация: 06.02.2012
Сообщений: 31

Как правильно сделать update с посредством dataadapter

09.01.2014, 23:31. Показов 6557. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем привет!
Возник вопрос. Есть в бд табличка

CountryId - int (ключ + индексируемый столбец)
CountryName - nchar(25) (уникальное название)

Есть , которая заполнялась следующим способом:
C#
1
2
3
4
5
6
7
countriesSqlCommand.Connection = commonElements.myConnection;
countriesSqlCommand.CommandText = commonElements.countriesString;
countriesSqlDataAdapter.SelectCommand = countriesSqlCommand;
countriesDataSet.Reset();
countriesSqlDataAdapter.Fill(countriesDataSet);
countriesBindingSource.DataSource = countriesDataSet.Tables[0];
countriesDataGridView.DataSource = countriesBindingSource;
Необходимо обновить табличку в БД изменёнными данными из countriesDataGridView.

Вот код события:
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
//нажатие кнопки сохранить
        private void bSave_Click(object sender, EventArgs e)
        {
                    //изменение текста команды
            countriesSqlCommand.CommandText = "UPDATE Countries SET CountryId = @CountryId, CountryName = @CountryName";
 
            //добавление параметров к команде
            countriesSqlCommand.Parameters.Add("@CountryId", SqlDbType.NChar, 5, "CountryId");
            countriesSqlCommand.Parameters.Add("@CountryName", SqlDbType.NChar, 25, "CountryName");
            
            //изменение команды Update в countriesSqlDataAdapter
            countriesSqlDataAdapter.UpdateCommand = countriesSqlCommand;
 
            try
            {
                commonElements.myConnection.Open();
                countriesSqlDataAdapter.Update(countriesDataSet.Tables[0]);
                MessageBox.Show("Данные oбновлены!");
            }
            catch (System.Exception ex)
            {
                MessageBox.Show("Ошибка обновления!\n" + ex);
            }
            commonElements.myConnection.Close();
        }
Конечно ничего не работает. Как написать так, чтобы БД обновлялась? Буду очень благодарен помощи в виде кода с краткими пояснениями.

И вот ещё вопрос. Id нужно самостоятельно вводить или БД уже сама, автоматически присвоит при обновлении добавленных записей?
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
09.01.2014, 23:31
Ответы с готовыми решениями:

Пакетная передача обновлений (Insert) в базу данных посредством DataAdapter.Update
Здравствуйте, господа :yes: Кто-нибудь имел дело с пакетной передачей обновлений (а конкретно вставок) в базу данных посредством...

Как вы делаете Update данных в БД (при использовании DataGridView, DataSet, DataAdapter)
Доброго дня, форумчане. Отдельный привет знакомым форумчанам. Решил поднять я старую наболевшую тему про DGV и DS. Тыщу лет назад я...

Не выполняется DataAdapter.Update
делаю так private void Form1_Load(object sender, EventArgs e) { conn = new...

4
Заблокирован
09.01.2014, 23:53
Обычно проще использовать OleDbCommandBuilder, чем писать UPDATE-, INSERT- и DELETE-запросы самому.
Вот пример. База в комплекте.

Но учтите, что в таблице должно быть поле-счётчик и желательно, чтобы оно было ключевым. Когда все поля имеют числового типа, оно обязательно должно быть ключевым.
Вложения
Тип файла: zip Редактируемая БД Access.zip (49.4 Кб, 376 просмотров)
1
1 / 1 / 0
Регистрация: 06.02.2012
Сообщений: 31
10.01.2014, 00:03  [ТС]
Спасибо! Насколько я понял commandbuilder только для работы с одной таблицей. Мне необходимо разобраться с вопросом глубже, т.к. у меня в курсаче 6 таблиц и некоторые будут обновляться вместе. Будем разбираться дальше.
0
Заблокирован
10.01.2014, 08:13
Насколько я понял commandbuilder только для работы с одной таблицей.
Нет, с любым количеством таблиц может работать.
0
 Аватар для kodv
1449 / 1121 / 347
Регистрация: 11.04.2011
Сообщений: 2,621
10.01.2014, 10:49
Цитата Сообщение от eaglecrazy Посмотреть сообщение
Id нужно самостоятельно вводить или БД уже сама, автоматически присвоит при обновлении добавленных записей?
Что имеется в виду под обновлением записей? По идее, обновление - это изменение. Логически, Id - это поле, которое позволяет уникально идентифицировать запись в любой момент времени. То есть, при обновлении записи Id меняться не должен, он должен задаваться при добавлении новой записи (автоматически или вручную).
Цитата Сообщение от eaglecrazy Посмотреть сообщение
Конечно ничего не работает
Следовало бы писать, как именно не работает. Нет эффекта? Или выбивает ошибку? По идее, должно ругаться на попытку установить одинаковый ключ у нескольких записей ...
Цитата Сообщение от eaglecrazy Посмотреть сообщение
Как написать так, чтобы БД обновлялась?
T-SQL
1
2
3
UPDATE Countries
    SET CountryName = @CountryName
    WHERE CountryId = @CountryId
Но это только в том случае, если вы правильно используете термин обновление. На его неправильное использование натолкнула ваша фраза (пояснения выше):
Цитата Сообщение от eaglecrazy Посмотреть сообщение
d нужно самостоятельно вводить или БД уже сама, автоматически присвоит при обновлении добавленных записей?
PS: Не слушайте змея искусителя. Учитесь составлять запросы самостоятельно. Пользы от этого будет определенно больше. Сможете как гибко писать команды для работы с DataAdapter'ом, так и, при необходимости, работать напрямую с БД. Да и не будет глупых вопросов, которые возникают зачастую на этом форуме при невозможности создать команду через CommandBuilder.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
10.01.2014, 10:49
Помогаю со студенческими работами здесь

проблема с DataAdapter.Update
вывожу при загрузке формы в datagrid табличку : Dim oCommand As New SqlClient.SqlCommand("select * From kioski", conn) ...

Обновление базы данных dataadapter.Update
знаю что таких тем было много но ни на одной из них я не нашел ответа на свой вопрос подключение.... думаю тут все правильно... ...

Волнует скорость DataSet и DataAdapter.Update
При использовании метода Update в базу данных вносятся изменения со всего DataSet'а или система сама определяет изменённые данные в...

DataAdapter.Update() - достать файлы из базы в Excel, поправить некоторые строки, положить все обратно
Задача, достать файлы из базы в эксель, поправить некоторые строки, положить все обратно, база очень большая, поэтому в идеале update...

как правильно прописать UPDATE
Всем добрый день! никак не получается прописать правильно UPDATE. Делаю событие на кнопке, в цикле обновление данных в таблице. поля,...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
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
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru