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

Сохранение изменений в бд через DataGridView

22.04.2015, 22:06. Просмотров 16734. Ответов 41
Метки нет (Все метки)

Прошу помощи в написании кода. Создаю интерфейс для базы данных ms sql. База подключена через BindingSource и таблицы выводятся в DataGridView. В базе несколько таблиц, сами названия вручную внесены в combobox, потом считывается текст с combobox и открывается таблица в DataGridView и все было бы хорошо, но если добавлять новые данные или изменять уже имеющиеся то изменения не сохраняются. По примерам пробовал писать разный код, но ничего не получается, выдает либо ошибку либо просто не работает. Помогите пожалуйста написать рабочий код к кнопке "Сохранить" чтобы изменения сохранялись в бд. Вот то что у меня есть
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
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Data.SqlClient;
 
namespace individ_zadanie
{
    public partial class Form1 : Form
    {        
        public Form1()
        {
            InitializeComponent();
            comboBox1.Items.AddRange(new object[] { "Готовые лекарства", "Изготовляемые лекарства", "Рецепты", "Заказы", "Компоненты", "Клиенты", "Технологии", "Производители" });
            comboBox1.Text = comboBox1.Items[0].ToString();
        }
 
        private void button1_Click(object sender, EventArgs e)// открытие таблиц
        {
            string dbLocation =
                            System.IO.Path.GetFullPath("D:/VS/individ_zadanie/individ_zadanie/bin/Debug/individ_zadanie.mdf");
            SqlConnection connection1 = new SqlConnection
                            (
                            @"data source=.\SQLEXPRESS;" +
                            "User Instance=true;Integrated Security=SSPI;AttachDBFilename="
                            + @dbLocation
                            );
            connection1.Open();
            SqlDataAdapter da = new SqlDataAdapter("select* FROM [" + comboBox1.SelectedItem + "]", connection1);
            SqlCommandBuilder cb = new SqlCommandBuilder(da);
            DataSet ds = new DataSet();
            da.Fill(ds, "[" + comboBox1.SelectedItem + "]");
            dataGridView1.DataSource = ds.Tables[0];
            connection1.Close();
        }
 
        private void button1_Click_2(object sender, EventArgs e)//кнопка сохранить
        {
            string dbLocation =
                            System.IO.Path.GetFullPath("D:/VS/individ_zadanie/individ_zadanie/bin/Debug/individ_zadanie.mdf");
            SqlConnection connection1 = new SqlConnection
                            (
                            @"data source=.\SQLEXPRESS;" +
                            "User Instance=true;Integrated Security=SSPI;AttachDBFilename="
                            + @dbLocation
                            );
            connection1.Open();
                 
        }        
    }
}
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
22.04.2015, 22:06
Ответы с готовыми решениями:

Сохранение изменений в БД через DataGridView
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data;...

Сохранение изменений в БД через DataGridView
Добрый вечер! Нашел отличный пример http://peshochkom.blogspot.com/2011_05_01_archive.html о том...

Сохранение изменений в DataGridView
здравствуйте! у меня проблема с DataGridView я немогу сохорнить то што я редактировал в...

Сохранение изменений в dataGridView
db = new DataClasses1DataContext(); dataGridViewClientSet.DataSource = db.Clients; private void...

Сохранение всех изменений из dataGridView в БД
Доброго времени суток, господа форумчане и с новым годом вас! Есть такая проблемка: имеется...

41
Fene4ka_
102 / 102 / 40
Регистрация: 24.01.2014
Сообщений: 1,244
25.04.2015, 16:03 2
воспользуйтесь этим приложением тык
0
Welcome20
51 / 45 / 31
Регистрация: 14.04.2015
Сообщений: 273
27.04.2015, 08:58 3
Всё как то сильно там так запущенно...

Имя_ТаблицыTableAdapter.Update(имя_БДDataSet); я использую для сохранения изменения в таблице, изменения делаю в самой DataGridView
1
FaceHoof
81 / 76 / 56
Регистрация: 21.04.2014
Сообщений: 965
Завершенные тесты: 3
27.04.2015, 10:25 4
Welcome20, т.е. вы пишите примерно такой код для кнопки
C#
1
2
3
4
private void button1_Click(object sender, EventArgs e)
        {
            kontaktsTableAdapter.Update(klientsDataSet);
        }
что-то меняете в DateGridView (допустим удаляете строку), нажимаете на кнопку (button1) и эта самая строка удаляется в БД, я правильно понял? Если так, то у меня почему-то такое не работает.
0
27.04.2015, 10:25
kir94
1 / 1 / 1
Регистрация: 21.12.2013
Сообщений: 93
27.04.2015, 10:43  [ТС] 5
Уже все сделал сам
0
Welcome20
51 / 45 / 31
Регистрация: 14.04.2015
Сообщений: 273
27.04.2015, 11:17 6
FaceHoof, да абсолютно верно так именно и делаю
C#
1
2
3
4
private void button2_Click(object sender, EventArgs e)
        {
            tblEquipmentTypesTableAdapter.Update(ipr_codeDataSet3);
        }
не знаю как у вас но у меня работает просто отлично...что за ошибка ? может я смогу чем нибудь вам помочь ?!?!

Добавлено через 3 минуты
использую уже не в первой таблице, и не на одной уже форме, работает просто на ура...без всяких ошибок, за счет этого я могу изменять, удалять, добавлять, данные в самой DGV
0
FaceHoof
81 / 76 / 56
Регистрация: 21.04.2014
Сообщений: 965
Завершенные тесты: 3
27.04.2015, 11:23 7
Welcome20, никакая ошибка не выдаётся. Просто ничего не происходит.
Вот рабочая программа:
Сохранение изменений в бд через DataGridView

Кнопки навигации работают, записи удаляются и добавляются (правда он там из-за ID ругается, но это уже другая тема). Нажимаю на button1 (сохранить) и ничего не происходит (за исключением вывода сообщения, которое я прописал в коде). Сама БД не обновляется. При повторном запуске приложения и при просмотре таблицы ясно видно, что никаких изменений не произошло.
Код:
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
41
42
43
44
45
46
47
48
49
50
51
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
 
namespace PostavkaOborudovaniya
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
 
        private void Form1_Load(object sender, EventArgs e)
        {
            // TODO: данная строка кода позволяет загрузить данные в таблицу "klientsDataSet.Kontakts". При необходимости она может быть перемещена или удалена.
            this.kontaktsTableAdapter.Fill(this.klientsDataSet.Kontakts);
 
            //Первый столбец не отображается
            this.dataGridView1.Columns[0].Visible = false;
 
            //Задаём названия остаьным столбцам
            dataGridView1.Columns[1].HeaderText = "Имя контакта";
            dataGridView1.Columns[2].HeaderText = "Телефон контакта";
            dataGridView1.Columns[3].HeaderText = "Факс контакта";
            dataGridView1.Columns[4].HeaderText = "E-mail";
            dataGridView1.Columns[5].HeaderText = "Другая информация";
 
        }
       
 
        private void bindingNavigatorDeleteItem_Click(object sender, EventArgs e)
        {
 
        }
 
        //Сохранение
        private void button1_Click(object sender, EventArgs e)
        {
            kontaktsTableAdapter.Update(klientsDataSet);
            //Имя_ТаблицыTableAdapter.Update(имя_БДDataSet);
            MessageBox.Show("Изменения сохранены", "Работа с БД", MessageBoxButtons.OK, MessageBoxIcon.Asterisk);
        }
    }
}
0
Welcome20
51 / 45 / 31
Регистрация: 14.04.2015
Сообщений: 273
27.04.2015, 12:00 8
Хм...ты создаешь таблицу в ручную, попробуй создать через готовую форму DGV, он автоматом создаст все и BuildinSource и TableAdapter, и кода будет в 2 раза меньше, подключаешь к DGV саму таблицу, выбираешь там же данные для вывода, а после создаешь кнопку, и прописываешь там код который я тебе посоветовал =)

Добавлено через 2 минуты
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
namespace IPR1
{
    public partial class Form6 : Form
    {
        public Form6()
        {
            InitializeComponent();
        }
 
        private void button1_Click(object sender, EventArgs e)
        {
            Close();
        }
 
        private void Form6_Load(object sender, EventArgs e)
        {
            // TODO: This line of code loads data into the 'ipr_codeDataSet4.tblExpenseAccounts' table. You can move, or remove it, as needed.
            this.tblExpenseAccountsTableAdapter.Fill(this.ipr_codeDataSet4.tblExpenseAccounts);
 
        }
 
        private void button2_Click(object sender, EventArgs e)
        {
            tblExpenseAccountsTableAdapter.Update(ipr_codeDataSet4);
        }
извеняюсь за оформление кода, не работает кнопочка создания кода c# незнаю почему....
вот в принципе весь мой код, обнговления и добаления записей в таблицу, так же и подключение

Добавлено через 3 минуты
Работает отлично, сверся, проверь мой способ, как я тебе рассказал...
1
FaceHoof
81 / 76 / 56
Регистрация: 21.04.2014
Сообщений: 965
Завершенные тесты: 3
27.04.2015, 12:16 9
Эм, я только начал изучать C# и Visual studio. Можно по порядку как это сделать?
Вот я вынес на форму DGV, чего теперь нажать то?)
P.S. Visual studio у меня на русском.
0
FroztBal
25 / 25 / 10
Регистрация: 18.08.2014
Сообщений: 205
Завершенные тесты: 1
27.04.2015, 12:42 10
FaceHoof, а вы в проект файл ДБ добавляли, а свойство "Copy Local" у файла БД какое?
1
FaceHoof
81 / 76 / 56
Регистрация: 21.04.2014
Сообщений: 965
Завершенные тесты: 3
27.04.2015, 12:52 11
FroztBal, вы про это?
Сохранение изменений в бд через DataGridView
0
FaceHoof
81 / 76 / 56
Регистрация: 21.04.2014
Сообщений: 965
Завершенные тесты: 3
27.04.2015, 13:10 12
FroztBal, поменял свойство на "Копировать, если новее" и всё заработало, спасибо за подсказку!

Добавлено через 5 минут
FroztBal, поменял свойство на "Копировать, если новее" и всё заработало, спасибо за подсказку!

Кстати, может заодно подскажете, как избежать ошибки при добавлении новой записи?
Вот сама ошибка:
Сохранение изменений в бд через DataGridView

Причину возникновения я понимаю, поле Id_kontakt пустое, но почему оно остаётся пустым, ведь в конструкторе таблиц я указал формулу для заполнения?

И как, собственно, его заполнять автоматически?
0
FaceHoof
81 / 76 / 56
Регистрация: 21.04.2014
Сообщений: 965
Завершенные тесты: 3
27.04.2015, 13:58 13
Кстати, открыл таблицу, а там всё равно почему-то данные остались о_о" Хотя в программе они уже не показываются.
0
Welcome20
51 / 45 / 31
Регистрация: 14.04.2015
Сообщений: 273
28.04.2015, 04:06 14
Смотри...создаешь форму...кидаешь на неё DGV...в правом верхнем углу на DGV есть типо что то стрелочки, раскрывающиеся список...там подключаешь свою БД...после чего в edit column меняешь название, ширину и т.п. столбцов...после всего этого у тебя уже при запуске программы должно быть выведена вся твоя таблица...после чего кидаешь кнопку на форму...жмешь 2 раза по ней и пишишь код
C#
1
tblExpenseAccountsTableAdapter.Update(ipr_codeDataSet4);
после чего у тебя есть и рабочая БД и рабочая кнопка сохранить...

Добавлено через 2 минуты
а насчет ошибки...это вы тип не тот написал в коде...проверь свою БД на типы данных которые вы выставили...и в коде нужны точно такие же...
0
FaceHoof
81 / 76 / 56
Регистрация: 21.04.2014
Сообщений: 965
Завершенные тесты: 3
28.04.2015, 09:44 15
Welcome20, а, ты об этом. Так я уже делал, ничего не работает =(
0
Welcome20
51 / 45 / 31
Регистрация: 14.04.2015
Сообщений: 273
28.04.2015, 09:50 16
FaceHoof, а что пишет ? что за ошибки ? или просто не обновляет данные ?
или ты вообще про что ? =)))
0
FaceHoof
81 / 76 / 56
Регистрация: 21.04.2014
Сообщений: 965
Завершенные тесты: 3
28.04.2015, 10:05 17
Welcome20, никаких ошибок, ничего не пишет. Просто не обновляет и всё.

Добавлено через 10 минут
Поставил Visual studio 2013 себе на ноут, попытался сделать тоже самое. Та же проблема =( Может там есть какая-то настройка, которую надо включить или ещё что?
0
Welcome20
51 / 45 / 31
Регистрация: 14.04.2015
Сообщений: 273
28.04.2015, 10:09 18
Если это насчет сохранения то мой мозг отказываеться понимать что либо...
попробуйте создать новый проект, и сделать все точно так же как я вам расписал, по логике и по коду он должен все делать на ура...
p.s. повторюсь, у меня сохранение работает просто отлично, использую на 10 таблицах и на разных формах и на разных DGV работает один и тот же кусок кода, изменено только название таблицы и dataset...
0
FaceHoof
81 / 76 / 56
Регистрация: 21.04.2014
Сообщений: 965
Завершенные тесты: 3
28.04.2015, 10:13 19
Welcome20, новый проект я создавал, всё тоже самое.
Ладно, попробую ещё у друзей это сделать, может у меня и правда глюки какие-то.
А можешь кинуть мне какой-нибудь свой рабочий проект? Желательно маленький с одной таблицей. Вдруг на его основе получится создать свой.
0
Welcome20
51 / 45 / 31
Регистрация: 14.04.2015
Сообщений: 273
28.04.2015, 10:48 20
FaceHoof, я извеняюсь...но я смогу только завтра кинуть вам проект, я сейчас просто не много занят работаю с tabcontrol, и как бы по возможно вам отвечаю тут...думаю вы сможете подождать до завтра...
0
28.04.2015, 10:48
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
28.04.2015, 10:48

Сохранение изменений из DataGridView в бд access
Добрый вечер, уважаемый форум. Я пишу программу WinForms, работающую с одним файлом accdb, в...

Сохранение изменений DataGridView в SQL Server
Есть БД и клиент-серверное приложение, которое считывает БД и позволяет его редактировать. У...

Сохранение изменений DataGridView в базу данных
Нужна помощь с сохранением изменений из DataGridView в БД MS SQL, пересмотрел много различных тем,...


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

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

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