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

Отображение данных в DGV после сделанных изменений в БД

13.02.2015, 10:58. Просмотров 507. Ответов 10
Метки нет (Все метки)

привет, не знаю как сделать после добавления записи в таблицу напрямую, после нажатия кнопки и чтоб в гриде моём эта запись сразу отображалась...вроде бы использую метод Fill, но он отображает весь список , а если очишаю перед Fill выдаёт ошибку, м.б можно как то метод Fill брал только последню запись с таблицы?подскажите пжл
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
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
InitializeComponent();
            con.ConnectionString = (@"Data Source=ASUSERVER\WINCC;Integrated Security=SSPI;Persist Security Info=False;Initial Catalog=asutp");
            dg = new DataGridView();
            dg.Width = 800;
            dg.Height = 600;
            this.Controls.Add(dg);
            da = new SqlDataAdapter("SELECT * FROM messages", con);
            dg.ReadOnly = false;
            dg.AllowUserToDeleteRows = false;
            dg.AllowUserToAddRows = false;
            da.Fill(dt);
            dg.DataSource = dt;
.......
 private void button2_Click(object sender, EventArgs e)
        {
            cmd.Connection = con;
            con.Open();
            cmd.CommandText = "INSERT INTO messages VALUES('Леонид','baza','"+dat+"','" + textBox1.Text + "','" + textBox2.Text + "')";
            try
            {
                cmd.ExecuteNonQuery();
                MessageBox.Show("Успешная вставка!");
 
                
              
                //da.Fill(dt);
                
                //dg.DataSource = dt;
                
                
                textBox1.Clear();
                textBox2.Clear();
                con.Close();
           
            }
            catch(Exception ex)
            {
                MessageBox.Show("Вставка не удалась!"+ex.Message);
            }
            cmd.Dispose();
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
13.02.2015, 10:58
Ответы с готовыми решениями:

Сохранение изменений, сделанных в DGV, в БД
Здравствуйте! Я создал проектик который загружает базу данных в DataGridView и есть такая...

Отображение данных из таблицы в DGV. Автоматическое внесение изменений в БД
Существует DataGridView и я в ней хочу отражать записи из какой либо таблицы из .mdb файла, чтобы...

Отслеживание изменений в БД сделанных другим приложением
Существует подключение к базе данных firebird. На форме находится dataGridView. Пользователь может...

Отображение в DGV данных таблицы БД
Есть таблица БД в ней 3 атрибута ----- Grid показывает 3. Потом добавляю в таблицу БД еще 3 и того...

Отображение данных из разных таблиц в DGV
Всем добрый день. Прошу помочь. В общем в C# и Visual Stuido я новичок. Всегда писал на Delphi/1c. ...

10
nio
5969 / 3375 / 335
Регистрация: 14.06.2009
Сообщений: 8,136
Записей в блоге: 2
13.02.2015, 12:10 2
Leo28, можно добавить новую строку параллельно в DataTable, с которым связан DGV
1
Leo28
3 / 3 / 1
Регистрация: 18.12.2014
Сообщений: 74
13.02.2015, 12:52  [ТС] 3
nio, можете подробней объяснить!!! или я чё то не доганяю...

Добавлено через 13 минут
говорит вставка не удалась , столбец 1 не принадлежит таблице...
C#
1
2
3
4
5
DataRow row = dt.NewRow();
                row["1"] = "bla - bla - bla";
                row["2"] = "bla - bla - bla";
                row["3"] = "bla - bla - bla";
                dt.Rows.Add(row);
Добавлено через 23 минуты
разобрался, спасибо. а может ещё кто нибудь подсказать как пронумеровать строки??? пробовал For не помогло...
0
nio
5969 / 3375 / 335
Регистрация: 14.06.2009
Сообщений: 8,136
Записей в блоге: 2
13.02.2015, 13:46 4
Leo28, попробуй пройтись циклом по заголовкам строк
0
Leo28
3 / 3 / 1
Регистрация: 18.12.2014
Сообщений: 74
15.02.2015, 16:28  [ТС] 5
nio, это что то типа этого ты имел ввиду?
C#
1
2
3
4
 for (int i = 0; i < dg.Rows.Count; i++)
            {
                dg.Rows[i].HeaderCell.Value = Convert.ToString(i + 1);
            }
0
insite2012
Модератор
Эксперт .NET
4878 / 3831 / 1096
Регистрация: 12.10.2013
Сообщений: 11,101
Записей в блоге: 2
15.02.2015, 18:22 6
Leo28, логика действий, собственно, проста.
1. При загрузке через DataAdapter получаем таблицу.
2. Отображаем таблицу в гриде.
3. Меняем значения в гриде.
4. Получаем из грида измененную таблицу.
5. Передаем эту (измененную) таблицу для обновления адаптеру (DataAdapter.Update()).
PROFIT!
1
nio
5969 / 3375 / 335
Регистрация: 14.06.2009
Сообщений: 8,136
Записей в блоге: 2
16.02.2015, 08:23 7
Цитата Сообщение от Leo28 Посмотреть сообщение
это что то типа этого ты имел ввиду?
да
0
Leo28
3 / 3 / 1
Регистрация: 18.12.2014
Сообщений: 74
16.02.2015, 14:03  [ТС] 8
помогите разобраться, я уже весь запутался, щас ошибка вылетает "Для обновления требуется действительный InsertCommand при передаче коллекции DataRow с новыми строками."
добавил кнопку сохранить
C#
1
2
3
4
5
6
7
   private void BtnSave_Click_1(object sender, EventArgs e)
        {
            da.Update((DataTable)dg.DataSource);
             MessageBox.Show
           ("Данные сохранены", "Информация", MessageBoxButtons.OK);
            
        }
0
nio
5969 / 3375 / 335
Регистрация: 14.06.2009
Сообщений: 8,136
Записей в блоге: 2
16.02.2015, 17:02 9
Цитата Сообщение от Leo28 Посмотреть сообщение
ошибка вылетает "Для обновления требуется действительный InsertCommand при передаче коллекции DataRow с новыми строками."
Обновление БД
Обновление DataSet в БД
работа с бд SQL на С#
Не могу изменить строки в DataTable

и ещё много-много ссылок, если воспользоваться поиском по форуму
0
Leo28
3 / 3 / 1
Регистрация: 18.12.2014
Сообщений: 74
17.02.2015, 14:26  [ТС] 10
Коллеги, можете ткнуть что не так?!почитал, сделал как в примерах, но выдаёт ошибку
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
 private void BtnSave_Click_1(object sender, EventArgs e)
        {
            SqlDataAdapter da = new SqlDataAdapter();
            SqlCommand cmd = new SqlCommand();
            cmd.Connection = con;
            con.Open();
            cmd.CommandText = ("UPDATE messages SET Запись =?, Примечание =?" + "WHERE Дежурный =?");
            da.UpdateCommand.Parameters.Add("Запись", SqlDbType.Text, 219, "Запись");//в экземпляре объекта отсутствует ссылка на объект
            da.UpdateCommand.Parameters.Add("Примечание", SqlDbType.Text, 218, "Примечание");
            da.UpdateCommand.Parameters.Add("Дежурный", SqlDbType.Text, 100, "Дежурный");
            da.UpdateCommand = cmd;
            da.Update((DataTable)dg.DataSource);
             
             try
            {
                cmd.ExecuteNonQuery();
                con.Close();
            }
            catch(Exception ex)
            {
                MessageBox.Show("Обновление не удалолсь!" + ex.Message);  
            }
Добавлено через 4 часа 12 минут
посидел, подумал, пописал....
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
private void BtnSave_Click_1(object sender, EventArgs e)
        {
            cmd.Connection = con;
            da.UpdateCommand = cmd;
            con.Open();
            cmd.CommandText = ("UPDATE messages SET Запись =Запись, Примечание =Примечание");
            da.UpdateCommand.Parameters.Add("Запись", SqlDbType.Text, 219, "Запись");
            da.UpdateCommand.Parameters.Add("Примечание", SqlDbType.Text, 218, "Примечание");
            da.InsertCommand = cmd;
            da.Update((DataTable)dg.DataSource);
            DialogResult res = MessageBox.Show("Изменения занесены!!!", "Подтверждение", MessageBoxButtons.OK);
            try
            {
                cmd.ExecuteReader();
                con.Close();
            }
            catch (Exception ex)
            {
                MessageBox.Show("Обновление не удалолсь!" + ex.Message);
            }
        }
изменения в гриде сохраняются а в БД не идут....ПОЧЕМУ
0
nio
5969 / 3375 / 335
Регистрация: 14.06.2009
Сообщений: 8,136
Записей в блоге: 2
17.02.2015, 15:39 11
Цитата Сообщение от Leo28 Посмотреть сообщение
изменения в гриде сохраняются а в БД не идут....ПОЧЕМУ
А почему
C#
1
у тебя da.InsertCommand = cmd;
при том, что несколькими строками ранее написано
C#
1
da.UpdateCommand = cmd;
?
На SQL Server запросы пишутся так:
SQL
1
UPDATE messages SET Запись = @Запись, Примечание = @Примечание
Имя параметра ВСЕГДА начинается с "@". Не спрашивай почему, меня так научили, писать иначе я не пробовал, потому что так работает

Добавлено через 1 минуту

Не по теме:

название таблицы messages, а названия полей на русском :scratch:
Смешение языков, использование транслита - признаки быдлокода :(



Добавлено через 1 минуту
Цитата Сообщение от Leo28 Посмотреть сообщение
Изменения занесены!!!
не нужно орать на пользователя, может испугаться и обидеться
0
17.02.2015, 15:39
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
17.02.2015, 15:39

Отображение индикатора загрузки данных в DGV
Помогите со progressBar1. При нажатии на кнопку нужно запустить progressBar1 чтоб полоса дошла до...

Сохранение изменений сделанных программно в datagridview который связан с бд Access
В общем, у меня есть датагрид связанный через выбор источника данных, и он полностью заблокирован...

Пропадает возможность сортировки в DGV после загрузки данных из DataTable
Здравствуйте! Вывожу в DataGridView отфильтрованные значения из DataTable, но при этом пропадает...


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

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

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