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

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

09.01.2014, 23:31. Просмотров 4960. Ответов 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
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
09.01.2014, 23:31
Ответы с готовыми решениями:

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

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

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

проблема с DataAdapter.Update
вывожу при загрузке формы в datagrid табличку : Dim oCommand As New...

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

Но учтите, что в таблице должно быть поле-счётчик и желательно, чтобы оно было ключевым. Когда все поля имеют числового типа, оно обязательно должно быть ключевым.
1
Вложения
Тип файла: zip Редактируемая БД Access.zip (49.4 Кб, 324 просмотров)
1 / 1 / 0
Регистрация: 06.02.2012
Сообщений: 31
10.01.2014, 00:03  [ТС] 3
Спасибо! Насколько я понял commandbuilder только для работы с одной таблицей. Мне необходимо разобраться с вопросом глубже, т.к. у меня в курсаче 6 таблиц и некоторые будут обновляться вместе. Будем разбираться дальше.
0
Заблокирован
10.01.2014, 08:13 4
Насколько я понял commandbuilder только для работы с одной таблицей.
Нет, с любым количеством таблиц может работать.
0
1436 / 1109 / 344
Регистрация: 11.04.2011
Сообщений: 2,613
10.01.2014, 10:49 5
Цитата Сообщение от 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
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
10.01.2014, 10:49

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

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

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

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

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


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

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

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