Форум программистов, компьютерный форум, киберфорум
C#: Базы данных
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/11: Рейтинг темы: голосов - 11, средняя оценка - 5.00
0 / 0 / 0
Регистрация: 08.07.2021
Сообщений: 18

Не сохраняется запись в local DB

08.10.2021, 20:48. Показов 2158. Ответов 9
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте, уважаемые разработчики!
У меня возникла следующая проблема с готовой программой. Дело в том что после компиляции я отправлю запрос на базу для сохранение новых данных (Оформляю заказ) и делаю это с помощью следующих методов

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
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
 
//Обновляет количество продуктов на складе
 void update_quantity_product()
        {
            try
            {
                productsBindingSource.EndEdit();
                productsTableAdapter.Update(local_Db_DS.Products);
                metroGrid1.Refresh();
 
               // MessageBox.Show("Количество продукта обновлено!", "Message", MessageBoxButtons.OK, MessageBoxIcon.Information);
 
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.ToString(), "Message", MessageBoxButtons.OK);
            }
        }
//Добавляет заказ
        void  insert_O()
        {
            try
            {
     
                ordersBindingSource.EndEdit();
                ordersTableAdapter.Update(local_Db_DS.Orders);
                Order_grid.Refresh();
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.ToString(), "Message", MessageBoxButtons.OK);
            }
        }
//Обновляет суммарный долг клиента
        void Update_client_debit()
        {
            try
            {
                clientsBindingSource.EndEdit();
                clientsTableAdapter.Update(local_Db_DS.Clients);
                ClientGrid.Refresh();
 
 
                MessageBox.Show("Долг обновлён!", "Message", MessageBoxButtons.OK, MessageBoxIcon.Information);
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.ToString(), "Message", MessageBoxButtons.OK);
            }
        }
//Добавляет нового клиента
  void Insert_client()
        {
            try
            {
                Client_surname.Text = Surname.Text;
 
                clientsBindingSource.EndEdit();
                clientsTableAdapter.Update(local_Db_DS.Clients);
                ClientGrid.Refresh();
 
 
                MessageBox.Show("Клиент добавлен!", "Message", MessageBoxButtons.OK, MessageBoxIcon.Information);
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.ToString(), "Message", MessageBoxButtons.OK);
            }
        }
 
//Оформляет заказ
private void Process_order_Click(object sender, EventArgs e)
        {
            if (insert_cli)
                Insert_client();
 
            if (chek_o == true)
            {
                insert_O();
 
                DGV_for_print.Rows.Add(Name_Products.Text + " " + Description.Text, Quentity.Text, Rp_price.Text, Price.Text);
 
                try
                {
                    db.OpenConnection();
                    SqlCommand command = new SqlCommand("INSERT INTO [Procurements] (id_order, id_product, Quantity, Price) VALUES( @id_order, @id_product, @Quantity, @Price)", db.GetConnection());
                    command.Parameters.AddWithValue("@id_order", Num_O.Text);
                    command.Parameters.AddWithValue("@id_product", TB_ID_P.Text);
                    command.Parameters.AddWithValue("@Quantity", Quentity.Text);
                    command.Parameters.AddWithValue("@Price", Price.Text);
 
                    command.ExecuteNonQuery();
                    db.CloseConnection();
 
 
                    MessageBox.Show("Оформлено!", "Message", MessageBoxButtons.OK, MessageBoxIcon.Information);
 
                    if (Quentity.Text != "")
                    {
 
                        quantity = Convert.ToDouble(((DataRowView)productsBindingSource.Current).Row["Quantity_p"].ToString()) - Convert.ToDouble(Quentity.Text);
                        Quantity_p.Text = Convert.ToString(quantity);
 
 
                    }
                }
                catch (Exception ex)
                {
                    MessageBox.Show(ex.ToString(), "Message", MessageBoxButtons.OK);
                }
 
                update_quantity_product();
 
            }
            else
            {
                try
                {
                    ordersBindingSource.EndEdit();
                    ordersTableAdapter.Update(local_Db_DS.Orders);
                    Order_grid.Refresh();
 
                    if (!chek_edit)
                        MessageBox.Show("Оформлено!", "Message", MessageBoxButtons.OK, MessageBoxIcon.Information);
                    else
                        MessageBox.Show("Сохранено!", "Message", MessageBoxButtons.OK, MessageBoxIcon.Information);
 
 
                    dis_access = false;
 
                }
                catch (Exception ex)
                {
                    MessageBox.Show(ex.ToString(), "Message", MessageBoxButtons.OK);
                }
            }
Но сперва ничего не сохраняется, только после нескольких разов начинает сохранятся. До этого пробовал и на прямую через запрос Insert, эффект тот же, я не понимаю откуда такая проблема? Почему после компиляции она делает так ?
Кстати, для сведенья я поменял базу данных, и сделал так чтобы программа обращалась к базе в папке debug, и указал чтобы база из корня проекта копировалась только если, версия новее чем в папке debug.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
08.10.2021, 20:48
Ответы с готовыми решениями:

Запись не сохраняется в БД
Добрый день! Я сделала форму "площади",там информация о площадях 2013 и 2014 гг., на этой форме у меня располагается кнопка "добавить...

Не сохраняется запись в локальной БД
У меня есть локальная БД. И такая строка подключения: string connectionString = @"Data Source = (localdb)\MSSQLLocalDB; Integrated...

Не сохраняется запись в бд access
Датагрид отображает данные из таблицы, по клику в нем данные заполняются в текстбоксах. Все нормально. Меняю там значения и добавляю новую...

9
296 / 120 / 33
Регистрация: 06.03.2016
Сообщений: 453
08.10.2021, 20:59
Цитата Сообщение от I_am_the_One Посмотреть сообщение
До этого пробовал и на прямую через запрос Insert, эффект тот же,
Ничего не понятно.
Если это LocalDB SQL`ский, то базы не хранятся ни в каких дебаг.
Что значит напрямую? В обозревателе серверов есть локальный, в нем базы данных, там создать запрос - так?
0
0 / 0 / 0
Регистрация: 08.07.2021
Сообщений: 18
08.10.2021, 21:16  [ТС]
1. В корне проекта есть файл с расширение .mdf (это и есть база данных, но работает она с помощью SQl server), после компиляции этот файл копируется либо в папку debug, либо в папку release, в зависимости, что выбирает программист.
2. По хорошему манипуляций с базой осуществляется с помощью команд Select, Insert, Update, Delete, но если использовать набор данных, то можно обращаться к BindingSource и добавлять и обновлять запись с помощью следующих команд:
clientsBindingSource.EndEdit();
clientsTableAdapter.Update(local_Db_DS.C lients);
ClientGrid.Refresh();
0
296 / 120 / 33
Регистрация: 06.03.2016
Сообщений: 453
08.10.2021, 21:34
I_am_the_One, насколько я понял, то у вас адаптер.
А если так, то в него надо просто передать датасет или табле в метод Update и всё, не надо никаких эндедит и т.п.
Если память не изменяет, то таблица или сет сами следят за данными (например, строки не удаляют, а помечают на удаление).
Добавили новую строку => сразу вызвали Update у адаптера, и посмотрите что будет.
1
785 / 616 / 273
Регистрация: 04.08.2015
Сообщений: 1,713
09.10.2021, 08:58
Цитата Сообщение от I_am_the_One Посмотреть сообщение
В корне проекта есть файл с расширение .mdf (это и есть база данных, но работает она с помощью SQl server), после компиляции этот файл копируется либо в папку debug, либо в папку release
Это ответ на ваш вопрос. После компиляции файл с данными заменяется файлом без данных. Лечится с помощью CopyLocal = false.
0
0 / 0 / 0
Регистрация: 08.07.2021
Сообщений: 18
09.10.2021, 09:41  [ТС]
Igr_ok, Вопрос, ведь я же поставил, чтобы копировалась более поздняя версия, разве от этого нету толку ?
И подскажите пожалуйста, где находится свойство CopyLocal? Просто у меня русская версия VisualStudio.

Добавлено через 3 минуты
ipsorokin, попробовал без этого clientsBindingSource.EndEdit(), воспользовался чисто этими командами

clientsTableAdapter.Update(local_Db_DS.C lients);
ClientGrid.Refresh();

Результат такой же как и раньше.
0
785 / 616 / 273
Регистрация: 04.08.2015
Сообщений: 1,713
09.10.2021, 09:45
I_am_the_One, в обозревателе решений найдите файл/БД и посмотрите его свойства.
0
0 / 0 / 0
Регистрация: 08.07.2021
Сообщений: 18
09.10.2021, 10:03  [ТС]
Igr_ok, Надеюсь, правильно сделал , мне пришлось после этого в ручную один раз скопировать базу в папку debug. Проблема в том что сама таблица заказов заполняется, но остальные данные из других таблиц не обновляются

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
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
 
//Обновляет количество продуктов на складе
 void update_quantity_product()
        {
            try
            {
                productsBindingSource.EndEdit();
                productsTableAdapter.Update(local_Db_DS.Products);
                metroGrid1.Refresh();
 
               // MessageBox.Show("Количество продукта обновлено!", "Message", MessageBoxButtons.OK, MessageBoxIcon.Information);
 
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.ToString(), "Message", MessageBoxButtons.OK);
            }
        }
//Добавляет заказ
        void  insert_O()
        {
            try
            {
     
                ordersBindingSource.EndEdit();
                ordersTableAdapter.Update(local_Db_DS.Orders);
                Order_grid.Refresh();
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.ToString(), "Message", MessageBoxButtons.OK);
            }
        }
//Обновляет суммарный долг клиента
        void Update_client_debit()
        {
            try
            {
                clientsBindingSource.EndEdit();
                clientsTableAdapter.Update(local_Db_DS.Clients);
                ClientGrid.Refresh();
 
 
                MessageBox.Show("Долг обновлён!", "Message", MessageBoxButtons.OK, MessageBoxIcon.Information);
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.ToString(), "Message", MessageBoxButtons.OK);
            }
        }
//Добавляет нового клиента
  void Insert_client()
        {
            try
            {
                Client_surname.Text = Surname.Text;
 
                clientsBindingSource.EndEdit();
                clientsTableAdapter.Update(local_Db_DS.Clients);
                ClientGrid.Refresh();
 
 
                MessageBox.Show("Клиент добавлен!", "Message", MessageBoxButtons.OK, MessageBoxIcon.Information);
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.ToString(), "Message", MessageBoxButtons.OK);
            }
        }
 
//Оформляет заказ
private void Process_order_Click(object sender, EventArgs e)
        {
            if (insert_cli)
                Insert_client();
 
            if (chek_o == true)
            {
                insert_O();
 
                DGV_for_print.Rows.Add(Name_Products.Text + " " + Description.Text, Quentity.Text, Rp_price.Text, Price.Text);
 
                try
                {
                    db.OpenConnection();
                    SqlCommand command = new SqlCommand("INSERT INTO [Procurements] (id_order, id_product, Quantity, Price) VALUES( @id_order, @id_product, @Quantity, @Price)", db.GetConnection());
                    command.Parameters.AddWithValue("@id_order", Num_O.Text);
                    command.Parameters.AddWithValue("@id_product", TB_ID_P.Text);
                    command.Parameters.AddWithValue("@Quantity", Quentity.Text);
                    command.Parameters.AddWithValue("@Price", Price.Text);
 
                    command.ExecuteNonQuery();
                    db.CloseConnection();
 
 
                    MessageBox.Show("Оформлено!", "Message", MessageBoxButtons.OK, MessageBoxIcon.Information);
 
                    if (Quentity.Text != "")
                    {
 
                        quantity = Convert.ToDouble(((DataRowView)productsBindingSource.Current).Row["Quantity_p"].ToString()) - Convert.ToDouble(Quentity.Text);
                        Quantity_p.Text = Convert.ToString(quantity);
 
 
                    }
                }
                catch (Exception ex)
                {
                    MessageBox.Show(ex.ToString(), "Message", MessageBoxButtons.OK);
                }
 
                update_quantity_product();
 
            }
            else
            {
                try
                {
                    ordersBindingSource.EndEdit();
                    ordersTableAdapter.Update(local_Db_DS.Orders);
                    Order_grid.Refresh();
 
                    if (!chek_edit)
                        MessageBox.Show("Оформлено!", "Message", MessageBoxButtons.OK, MessageBoxIcon.Information);
                    else
                        MessageBox.Show("Сохранено!", "Message", MessageBoxButtons.OK, MessageBoxIcon.Information);
 
 
                    dis_access = false;
 
                }
                catch (Exception ex)
                {
                    MessageBox.Show(ex.ToString(), "Message", MessageBoxButtons.OK);
                }
            }
0
296 / 120 / 33
Регистрация: 06.03.2016
Сообщений: 453
09.10.2021, 10:28
Цитата Сообщение от I_am_the_One Посмотреть сообщение
Проблема в том что сама таблица заказов заполняется, но остальные данные из других таблиц не обновляются
Так вы в апдейт передаете конкретную таблицу, а не датасет со всеми таблицами. С чего другим обновляться? Разве что там все на триггерах
1
0 / 0 / 0
Регистрация: 08.07.2021
Сообщений: 18
12.10.2021, 23:23  [ТС]
ipsorokin, Igr_ok, Спасибо вам ребят, я нашел ошибку, проблема была в том, что я использую tabControl в своей программе и я использовал элементы одной вкладки будучи находясь на другой. Как только я создал такой же textBox подключенный тому же полю что и textBox на той вкладке, которому я обращался, обновление данных начало работать безотказно. На всё равно спасибо вам за информацию, узнал для себя что-то новое!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
12.10.2021, 23:23
Помогаю со студенческими работами здесь

не сохраняется запись в файле
у меня вот такой код но почему то данные не сохраняются в файле $bannernepovtor= file_get_contents('banner.txt'); if...

Не всегда сохраняется запись в таблице
Здравствуйте. Есть БД Аксесс2013+SQL Server 2008. БД используется в сети - один файл могут открыть много пользователей одновременно по...

Не сохраняется запись в главной таблице
Здравствуйте. Есть проблема в БД на Access+SQL server. В БД есть таблицы: 1)ЕжедОтчет (НомерОтчета - счетчик,ключевое;ТабНомер - целое;...

insert into не сохраняется запись в базе
Кодом генерится скрипт: $esql = ("insert into g1_event (case_id, id, event_date, event_time, event_name_id, event_result_id,...

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


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

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Новые блоги и статьи
Настройки VS Code
Loafer 13.04.2026
{ "cmake. configureOnOpen": false, "diffEditor. ignoreTrimWhitespace": true, "editor. guides. bracketPairs": "active", "extensions. ignoreRecommendations": true, . . .
Оптимизация кода на разграничение прав доступа к элементам формы
Maks 13.04.2026
Алгоритм из решения ниже реализован на нетиповом документе, разработанного в конфигурации КА2. Задачи, как таковой, поставлено не было, проделанное ниже исключительно моя инициатива. Было так:. . .
Контроль заполнения и очистка дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: реализовать контроль корректности заполнения дат назначения. . .
Архитектура слоя интернета для сервера-слоя.
Hrethgir 11.04.2026
В продолжение https:/ / www. cyberforum. ru/ blogs/ 223907/ 10860. html Знаешь что я подумал? Раз мы все источники пишем в голове ветки, то ничего не мешает добавить в голову такой источник, который сам. . .
Подстановка значения реквизита справочника в табличную часть документа
Maks 10.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: при выборе сотрудника (справочник Сотрудники) в ТЧ документа. . .
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях. Задача: при копировании документа очищать определенные реквизиты и табличную. . .
модель ЗдравоСохранения 8. Подготовка к разному выполнению заданий
anaschu 08.04.2026
https:/ / github. com/ shumilovas/ med2. git main ветка * содержимое блока дэлэй из старой модели теперь внутри зайца новой модели 8ATzM_2aurI
Блокировка документа от изменений, если он открыт у другого пользователя
Maks 08.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в конфигурации КА2. Задача: запретить редактирование документа, если он открыт у другого пользователя. / / . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru