Форум программистов, компьютерный форум, киберфорум
C#: Базы данных
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.50/6: Рейтинг темы: голосов - 6, средняя оценка - 4.50
 Аватар для Midian
606 / 388 / 198
Регистрация: 31.03.2013
Сообщений: 2,690

Обновление данных в БД происходит "через раз"

01.12.2013, 01:00. Показов 1365. Ответов 19
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Эта тема уже поднималась сотни раз на это форуме, но я так толком и не нашел нормального решения данной проблемы, необходимо сохранить изменения в таблице и передать их в БД, нашел применение вот таким вот способом, он срабатывает, но не всегда почему то:
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 button4_Click(object sender, EventArgs e)
        {
            try
            {
                dataGridView1.DataSource = product_costDataSet.Tables;
                machineTableAdapter.Update(product_costDataSet);
                string connStr = @"Data Source=.\SQLEXPRESS;
                             Initial Catalog=C:\Program Files\Microsoft SQL Server\MSSQL11.SQLEXPRESS\MSSQL\DATA\Product_cost.mdf;
                             Integrated Security=True";
                SqlConnection conn = new SqlConnection(connStr);
                conn.Open();
                SqlCommand cmd = new SqlCommand("Select * From Machine", conn);
                DataTable dt = new DataTable();
                SqlDataAdapter da = new SqlDataAdapter(cmd);
                da.Fill(dt);
                dataGridView1.DataSource = dt;
                conn.Close();
                conn.Dispose();
                MessageBox.Show("Изменения в базе данных выполнены!", "Уведомление о результатах", MessageBoxButtons.OK);
            }
            catch (Exception)
            {
                MessageBox.Show("Изменения в базе данных выполнить не удалось!", "Уведомление о результатах", MessageBoxButtons.OK);
            }
        }
почему он работает через раз не понятно, может быть кто-нибудь выложит нормальный рабочий вариант, был бы очень сильно благодарен, заранее спасибо.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
01.12.2013, 01:00
Ответы с готовыми решениями:

Запуск Excel из Access происходит строго периодически - через раз происходит сбой
запуск Excell из Access происходит строго периодически - через раз. происходит сбой. После сбоя прложение выполняется нормально, затем...

Не происходит обновление данных при редактировании
Если объект успешно добавлен, удален или отредактирован, обращаюсь к Init_data1, которая обновляет IBrem(типа IBQuery),она свзяна с...

Обработка сигнала происходит через раз
Доброго времени суток. У меня есть приложение, в котором пользователь создаёт N потоков для перемножения квадратных матриц. Потоки...

19
Футболист
 Аватар для Goal
533 / 435 / 142
Регистрация: 31.10.2011
Сообщений: 1,010
01.12.2013, 01:22
1. Вот тебе еще пример
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
using (SqlConnection openCon = new SqlConnection(connStr))
            {
                DataSet changes = dsDocuments.GetChanges();//DataSet dsDocuments находятся в данном классе.
 
 
                if (changes == null)
                    return false;
 
                SqlCommandBuilder builder = new SqlCommandBuilder(dataAdapterDocuments);
 
                openCon.Open();
                dataAdapterDocuments.UpdateCommand = builder.GetUpdateCommand();
                dataAdapterDocuments.Update(changes);
                openCon.Close();
                return true;
            }
0
 Аватар для Midian
606 / 388 / 198
Регистрация: 31.03.2013
Сообщений: 2,690
01.12.2013, 01:30  [ТС]
Goal, А можно пояснить код, не совсем понятно что тут к чему, особенно dsDocuments
0
Футболист
 Аватар для Goal
533 / 435 / 142
Регистрация: 31.10.2011
Сообщений: 1,010
01.12.2013, 01:32
это некий DataSet, загруженный в dgv
в коде он фигурирует для получения изменений в нем
0
 Аватар для Midian
606 / 388 / 198
Регистрация: 31.03.2013
Сообщений: 2,690
01.12.2013, 02:17  [ТС]
Goal, Ничем не помог мне ваш метод, может быть есть что-то другое?

Добавлено через 20 минут
Даже этот пример мне не помог: http://www.intuit.ru/studies/c... 378?page=3
Поможет кто-нибудь с этой проблемой или нет?
0
158 / 187 / 48
Регистрация: 25.11.2013
Сообщений: 978
01.12.2013, 03:21
Не используй датасеты ADO.NET, это сырая поделка
0
 Аватар для Midian
606 / 388 / 198
Регистрация: 31.03.2013
Сообщений: 2,690
01.12.2013, 12:04  [ТС]
DataPlanner, Выложите свой метод для все общего обозрения, не будем использовать
0
438 / 362 / 100
Регистрация: 29.06.2010
Сообщений: 981
Записей в блоге: 1
01.12.2013, 12:23
Цитата Сообщение от Midian Посмотреть сообщение
почему он работает через раз не понятно
Что значит через раз, 1 раз сохранил, 2 не сохранил, 3 сохранил, так?

У вас есть адаптер который сохраняет, у него должна быть команда обновления

C#
1
2
3
4
5
6
7
8
9
10
11
try
            {
                machineTableAdapter.Update(product_costDataSet);
                machineTableAdapter.Fill(product_costDataSet);
                dataGridView1.DataSource = product_costDataSet.Tables;
                MessageBox.Show("Изменения в базе данных выполнены!", "Уведомление о результатах", MessageBoxButtons.OK);
            }
            catch (Exception)
            {
                MessageBox.Show("Изменения в базе данных выполнить не удалось!", "Уведомление о результатах", MessageBoxButtons.OK);
            }
0
 Аватар для Midian
606 / 388 / 198
Регистрация: 31.03.2013
Сообщений: 2,690
01.12.2013, 12:30  [ТС]
Grishaco,
C#
1
2
3
workerTableAdapter.Update(product_costDataSet);
                workerTableAdapter.Fill(product_costDataSet.Worker);
                dataGridView1.DataSource = product_costDataSet.Tables;
не помогло.... да, сохраняет через раз, может сохранить, а может и нет, не понятно просто.....
0
438 / 362 / 100
Регистрация: 29.06.2010
Сообщений: 981
Записей в блоге: 1
01.12.2013, 12:37
Цитата Сообщение от Midian Посмотреть сообщение
не помогло.... да, сохраняет через раз, может сохранить, а может и нет, не понятно просто.....
Попробуйте выбрать измененные и посмотреть есть там записи или нет. Возможно в коде через раз изменяются данные. Этот датасет должен содержать таблицы с записями, которые будут добавлены, изменены или удалены.
Если в нем не будет записей, значит запрос верный, где то вы заполняете не верно.

C#
1
var change = product_costDataSet.GetChanges()
0
 Аватар для Midian
606 / 388 / 198
Регистрация: 31.03.2013
Сообщений: 2,690
01.12.2013, 12:43  [ТС]
Я уже и читал что нужно добавить dataGridView1.EndEdit(); перед тем как делать команду Update, все ровно не работает, хоть убей, не знаю уже что и делать......

Добавлено через 4 минуты
Grishaco,
C#
1
2
var change = product_costDataSet.GetChanges();
                MessageBox.Show(change.ToString());
Добавил следующее, перехватчик сработал и написал следующее:
System.NullReferenceException ссылка на объект не указывает на экземпляр объекта...
0
438 / 362 / 100
Регистрация: 29.06.2010
Сообщений: 981
Записей в блоге: 1
01.12.2013, 12:48
Цитата Сообщение от Midian Посмотреть сообщение
Добавил следующее, перехватчик сработал и написал следующее:
System.NullReferenceException ссылка на объект не указывает на экземпляр объекта...
Это говорит о том, что в датасет не было изменений, смотрите код где вы заполняете датасет. Сохранение здесь ни причем.

Ругается на какую строку? первую или вторую?
0
 Аватар для Midian
606 / 388 / 198
Регистрация: 31.03.2013
Сообщений: 2,690
01.12.2013, 12:54  [ТС]
Grishaco, Ругается таким образом на MessageBox.Show(change.ToString());, заполнение идет у меня через команды Insert, вывод данных идет через this.workerTableAdapter.Fill(this.produc t_costDataSet.Worker); а редактирование происходит через datagridview пользователь например ручками поменял что то в нем, затем ему нужно сохранить изменения, он нажимает кнопку в которой написано:
C#
1
2
dataGridView1.DataSource = product_costDataSet.Tables;
workerTableAdapter.Update(product_costDataSet);
и по сути оно должно было сохраниться в БД, но нет.....
0
438 / 362 / 100
Регистрация: 29.06.2010
Сообщений: 981
Записей в блоге: 1
01.12.2013, 12:57
Можете выложить проект?
0
 Аватар для Midian
606 / 388 / 198
Регистрация: 31.03.2013
Сообщений: 2,690
01.12.2013, 12:59  [ТС]
Да пожалуйста:
Вложения
Тип файла: rar Desktop.rar (1.08 Мб, 4 просмотров)
0
 Аватар для Midian
606 / 388 / 198
Регистрация: 31.03.2013
Сообщений: 2,690
01.12.2013, 13:04  [ТС]
написано было на Visual 2012 и SQL Server 2012
БД прикрепил еще:
Вложения
Тип файла: rar БД.rar (306.8 Кб, 4 просмотров)
0
438 / 362 / 100
Регистрация: 29.06.2010
Сообщений: 981
Записей в блоге: 1
01.12.2013, 13:12
Сори ошибся.
0
 Аватар для Midian
606 / 388 / 198
Регистрация: 31.03.2013
Сообщений: 2,690
01.12.2013, 13:22  [ТС]
Цитата Сообщение от Grishaco Посмотреть сообщение
Сори ошибся.
Эммммм....??????

Добавлено через 8 минут
Ребят, ну так что? будут какие идеи?
0
438 / 362 / 100
Регистрация: 29.06.2010
Сообщений: 981
Записей в блоге: 1
01.12.2013, 13:56
Цитата Сообщение от Midian Посмотреть сообщение
Ребят, ну так что? будут какие идеи?
Написал не в ту ветку, поэтому по быстрому исправил. Смотрю пока.

Добавлено через 31 минуту
И смешались люди кони.
Вот код который работает

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
public partial class Form3 : Form
    {
        public Form3()
        {
            InitializeComponent();
        }
 
        private void button3_Click(object sender, EventArgs e)
        {
            Form3 form3 = new Form3();
            form3.Hide();
            this.Visible = false;
            Form2 form2 = new Form2();
            form2.Show();
        }
 
        private void Form3_FormClosed(object sender, FormClosedEventArgs e)
        {
            Form3 form3 = new Form3();
            form3.Hide();
            this.Visible = false;
            Form2 form2 = new Form2();
            form2.Show();
        }
 
        private void Form3_Load(object sender, EventArgs e)
        {
            refresh();
        }
 
        private void refresh()
        {
            this.shopTableAdapter.Fill(this.product_costDataSet.Shop);
            dataGridView1.DataSource = this.product_costDataSet.Shop;
        }
 
        private void button1_Click(object sender, EventArgs e)
        {
            
            if (textBox1.Text != "" && textBox2.Text != "")
            {
                DataRow dataRow = this.product_costDataSet.Shop.NewRow();
                dataRow["ID_shop"] = textBox1.Text;
                dataRow["Shop_name"] = textBox1.Text;
                this.product_costDataSet.Shop.Rows.Add(dataRow);
                shopTableAdapter.Update(product_costDataSet.Shop);
                refresh();
            }
        }
 
        private void button2_Click(object sender, EventArgs e)
        {
            var result = MessageBox.Show("Вы действительно желаете удалить данную запись?", "Предупрежение!", MessageBoxButtons.YesNo);
            if (result == DialogResult.Yes)
            {
                var dataRows = this.product_costDataSet.Shop.Select("ID_shop = " + textBox3.Text);
                foreach (var dataRow in dataRows)
                {
                    dataRow.Delete();
                }
                shopTableAdapter.Update(product_costDataSet.Shop);
                refresh();
            }
        }
 
        private void button4_Click(object sender, EventArgs e)
        {
            shopTableAdapter.Update(product_costDataSet);
            refresh();
        }
    }
1
 Аватар для Midian
606 / 388 / 198
Регистрация: 31.03.2013
Сообщений: 2,690
02.12.2013, 01:51  [ТС]
Grishaco, спасибо тебе большое, выручил
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
02.12.2013, 01:51
Помогаю со студенческими работами здесь

Не происходит обновление в базу данных после Update-запроса
private void mnuEditVisit_Click(object sender, EventArgs e) { int n; Bs.Program.id =...

При добавлении (удалении) данных в DataGrid не происходит обновление
Пытаюсь создать часть приложения, которая позволяет работать со списком пользователей (редактирование, добавление, удаление). Пишу с...

Почему не происходит обновление базы через адаптер? (ошибки 661, 662, 655)
Возникла проблема с адаптером. Работаю с VS2010 c#. Есть стандартный DataGridView1, к нему через визуальный интерфейс подсоединил...

Обновление данных один раз в сутки
Здравствуйте, участники форума. Чувствую что объяснить будет не просто, но я буду стараться. Суть - конвертер валют, загружает курсы с...

Обновление данных в txt файле раз в сутки
есть файл file.txt с числом внутри. пытаюсь вот таким вот кодом увеличить число в файле $counter =...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Как я обхитрил таблицу Word
Alexander-7 21.03.2026
Когда мигает курсор у внешнего края таблицы, и нам надо перейти на новую строку, а при нажатии Enter создается новый ряд таблицы с ячейками, то мы вместо нервных нажатий Энтеров мы пишем любые буквы. . .
Krabik - рыболовный бот для WoW 3.3.5a
AmbA 21.03.2026
без регистрации и смс. Это не торговля, приложение не содержит рекламы. Выполняет свою непосредственную задачу - автоматизацию рыбалки в WoW - и ничего более. Однако если админы будут против -. . .
Программный отбор значений справочника
Maks 21.03.2026
Установка программного отбора значений справочника "Сотрудники" из модуля формы документа. В качестве фильтра для отбора служит предопределенное значение перечислений. Процедура. . .
Переходник USB-CAN-GPIO
Eddy_Em 20.03.2026
Достаточно давно на работе возникла необходимость в переходнике CAN-USB с гальваноразвязкой, оный и был разработан. Однако, все меня терзала совесть, что аж 48-ногий МК используется так тупо: просто. . .
Оттенки серого
Argus19 18.03.2026
Оттенки серого Нашёл в интернете 3 прекрасных модуля: Модуль класса открытия диалога открытия/ сохранения файла на Win32 API; Модуль класса быстрого перекодирования цветного изображения в оттенки. . .
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-rectangles-sdl3-c. zip finish-rectangles-sdl3-cpp. zip
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru