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

Измененные данные не сохраняются в БД

10.09.2014, 19:50. Показов 1451. Ответов 11
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
вот есть такой код, должен изменять внесенные в базу данные, но он только выводит на экран.
первая часть работает (отмечена комментарием рабочая часть)
где моя ошибка? может надо было вторую часть отдельным case писать?
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
case "5":
                        Console.WriteLine("Введите код квартиры");
                        var key16 = new ConsoleKeyInfo();
                        var number16 = "";
                        while ((key16 = Console.ReadKey()).Key != ConsoleKey.Enter)
                        {
                            if (!Char.IsDigit(key16.KeyChar))
                            {
                                if (!Char.IsControl(key16.KeyChar))
                                    Console.WriteLine("\b \b");
                            }
                            else
                            {
                                if (!Char.IsControl(key16.KeyChar))
                                    number16 += key16.KeyChar;
                            }
                            if (key16.Key == ConsoleKey.Backspace && number16.Length > 0)
                            {
                                number16 = number16.Remove(number16.Length - 1, 1);
                                Console.WriteLine("\b");
                            }
                            if (number16.Length == 0)
                            {
                                Console.WriteLine("Небыл введен код квартиры");
                                break;
                            }
                        }
                        id = Convert.ToInt32(number16);
                        SqlConnection myConnection3 = new SqlConnection("user id=admin;" +
"password=admin;server=localhost;" + "Trusted_Connection=yes;" +
"database=ned; " + "connection timeout=1");
                        try
                        {
                            myConnection3.Open();
                            SqlDataReader myReader2 = null;
                            SqlParameter myParam4 = new SqlParameter("@Param1", SqlDbType.Int);
                            myParam4.Value = id;
                            SqlCommand myCommand4 = new SqlCommand("Select * from Квартиры where id=@Param1", myConnection3);
                            myCommand4.Parameters.Add(myParam4);
                            myReader2 = myCommand4.ExecuteReader();
                            if (myReader2.Read() == true)
                            {
                                Console.Write("id: " + myReader2["id"].ToString() + "\n");
                                //Console.Write("КодВладельца: " + myReader12["Код"].ToString() + "\n");
                                Console.Write("Город: " + myReader2["Город"].ToString() + "\n");
                                Console.Write("Метро: " + myReader2["Метро"].ToString() + "\n");
                                Console.Write("Улица: " + myReader2["Улица"].ToString() + "\n");
                                Console.Write("Дом: " + myReader2["Дом"].ToString() + "\n");
                                Console.Write("Номер квартиры: " + myReader2["НомерКвартиры"].ToString() + "\n");
                                Console.Write("Этажей: " + myReader2["Этажность"].ToString() + "\n");
                                Console.Write("Комнат: " + myReader2["Комнат"].ToString() + "\n");
                                Console.Write("Площадь квартиры: " + myReader2["Площадь"].ToString() + "\n");
                                Console.Write("Стоимость: " + myReader2["Стоимость"].ToString() + "\n");
                            }
                            else
                            {
                                Console.WriteLine("\nВведите правильные данные!!!");
                                break;
                            }
                            myConnection3.Close(); break;
                        }
                        catch (Exception ex)
                        {
                            Console.WriteLine(ex.Message); break;
                        }
Добавлено через 2 минуты
вторую часть напишу после 1-го ответа, не пропускает кол-во символов

Добавлено через 1 час 42 минуты
как прописывал опущу, там ошибок нет)
вторая часть
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
  SqlConnection myConnection4 = new SqlConnection("user id=admin;" +
                        "password=admin;" +"server=localhost;" +"Trusted_Connection=yes;" +
                        "database=ned; " +"connection timeout=1");
                        try
                        {
                            myConnection4.Open();
                            SqlParameter myParam6 = new SqlParameter("@Param6", SqlDbType.Int);
                            myParam6.Value = kodvlad;
                            SqlParameter myParam7 = new SqlParameter("@Param7", SqlDbType.NVarChar, 50);
                            myParam7.Value = gorod;
                            SqlParameter myParam8 = new SqlParameter("@Param8", SqlDbType.NVarChar, 50);
                            myParam8.Value = metro;
                            SqlParameter myParam9 = new SqlParameter("@Param9", SqlDbType.NVarChar, 50);
                            myParam9.Value = ylica;
                            SqlParameter myParam10 = new SqlParameter("@Param10", SqlDbType.Int);
                            myParam10.Value = dom;
                            SqlParameter myParam11 = new SqlParameter("@Param11", SqlDbType.Int);
                            myParam11.Value = nomer;
                            SqlParameter myParam12 = new SqlParameter("@Param12", SqlDbType.Int);
                            myParam12.Value = etazn;
                            SqlParameter myParam13 = new SqlParameter("@Param13", SqlDbType.Int);
                            myParam13.Value = komnat;
                            SqlParameter myParam14 = new SqlParameter("@Param14", SqlDbType.Int);
                            myParam14.Value = plocha;
                            SqlParameter myParam15 = new SqlParameter("@Param15", SqlDbType.Int);
                            myParam15.Value = cena;
                            SqlParameter myParam1 = new SqlParameter("@Param1", SqlDbType.Int);
                            myParam1.Value = id;
                            SqlCommand myCommand4 = new SqlCommand(@"UPDATE  ned.dbo.Квартиры set  КодВладельца = @Param6,"+
                            "Город=@Param7,Метро=@Param8,Улица=@Param9,Дом=@Param10,НомерКвартиры=@Param11,Этажность=@Param12,"+
                            "Комнат=@Param13,Площадь=@Param14,Стоимость=@Param15 where id=@Param1", myConnection4);
                            myCommand4.Parameters.Add(myParam6);
                            myCommand4.Parameters.Add(myParam7);
                            myCommand4.Parameters.Add(myParam8);
                            myCommand4.Parameters.Add(myParam9);
                            myCommand4.Parameters.Add(myParam10);
                            myCommand4.Parameters.Add(myParam11);
                            myCommand4.Parameters.Add(myParam12);
                            myCommand4.Parameters.Add(myParam13);
                            myCommand4.Parameters.Add(myParam14);
                            myCommand4.Parameters.Add(myParam15);
                            myCommand4.ExecuteNonQuery();
                            myConnection4.Close();
                            Console.WriteLine("\nИзменения внесены\n");
                             break;
                         }
                        catch (Exception ex)
                        {
                            Console.WriteLine(ex.Message); break;
                        }
Добавлено через 19 часов 58 минут
так хоть кто-нить подскажет, почему закрывается командная строка после того как выводит данные?
что сделать, чтобы можно было эти данные изменить?
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
10.09.2014, 19:50
Ответы с готовыми решениями:

Измененные данные из dataGridView не сохраняются в БД
Вопрос очень частый, но пройдя по форуму ничего для себя не нашел. Работаю без пространства OleDb, просто добавил в проект базу...

Сохранить измененные данные из DataGridView в DataSet
Подключил источник данных к DataGridView Название_ТаблицыBindingSource, в нем есть 4 записи. Добавил несколько новых записей. И наткнулся...

В FastReport не отображаются данные, измененные или добавленные в процессе работы программы
Кинул на форму отчет(FastReport.NET 1.8.40) связал его с таблице с бд через визуальные контролы - все ок. Дальше таблицу заполняю...

11
 Аватар для kodv
1449 / 1121 / 347
Регистрация: 11.04.2011
Сообщений: 2,621
11.09.2014, 04:42
Цитата Сообщение от вредина Посмотреть сообщение
где моя ошибка?
Пока что у вас на базу посылается запрос:
T-SQL
1
UPDATE  ned.dbo.Квартиры set  КодВладельца = NULL,Город=NULL,Метро=NULL,Улица=NULL,Дом=NULL,НомерКвартиры=NULL,Этажность=NULL,Комнат=NULL,Площадь=NULL,Стоимость=NULL where id=NULL
В результате выполнения данной комманды будет обработано 0 записей, так как условие Id=NULL никогда не будет истинно, ибо на равенство NULL'у поля проверяются через IS (Id IS NULL, Id IS NOT NULL).Попробуйте параметры не просто добавлять к myCommand4, а еще и задавать им значения. Как то так:
C#
1
myParam1.Value = 58;
Кстати, обратите внимание, что как раз myParam1 вы в коллекцию параметров даже не добавляете, а именно myParam1 является критерием отбора записи, которую нужно изменить.

Добавлено через 3 минуты
PS: В таких случаях параметры удобнее добавлять так:
C#
1
myCommand4.Parameters.AddWithValue("@Param1", 58);
0
0 / 0 / 3
Регистрация: 08.10.2012
Сообщений: 141
16.09.2014, 22:16  [ТС]
kodv, извиняюсь за отсутствие дела были)
немного не понял я про
C#
1
myParam1.Value = 58;
вот скидываю вторую часть, как я прописывал (пример).
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
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
Console.WriteLine("Введите город");
                        gorod = Console.ReadLine();
                        if (gorod.Length == 0)
                        {
                            Console.WriteLine("Небыло введено название города");
                            break;
                        }
                        Console.WriteLine("Введите станцию метро");
                        metro = Console.ReadLine();
                        if (metro.Length == 0)
                        {
                            Console.WriteLine("Небыла введена станция метро");
                            break;
                        }
                        Console.WriteLine("Введите улицу");
                        ylica = Console.ReadLine();
                        if (ylica.Length == 0) 
                        {
                            Console.WriteLine("Не была введена улица");
                            break;
                        }
                        Console.WriteLine("Введите количество комнат");
                        var key20 = new ConsoleKeyInfo();
                        var number20 = "";
                        while ((key20 = Console.ReadKey()).Key != ConsoleKey.Enter)
                        {
                            if (!Char.IsDigit(key20.KeyChar))
                            {
                                if (!Char.IsControl(key20.KeyChar))
                                    Console.WriteLine("\b \b");
                            }
                            else
                            {
                                if (!Char.IsControl(key20.KeyChar))
                                    number20 += key20.KeyChar;
                            }
                            if (key20.Key == ConsoleKey.Backspace && number20.Length > 0)
                            {
                                number20 = number20.Remove(number20.Length - 1, 1);
                                    Console.WriteLine("\b");
                            }
                        }
                        if (number20.Length == 0)
                        {
                               Console.WriteLine("Небыло введено количество комнат");
                        }
                        komnat = Convert.ToInt32(number20);
                         Console.WriteLine("Введите площадь квартиры");
                        var key21 = new ConsoleKeyInfo();
                        var number21 = "";
                        while ((key21 = Console.ReadKey()).Key != ConsoleKey.Enter)
                        {
                            if (!Char.IsDigit(key21.KeyChar))
                            {
                                if (!Char.IsControl(key21.KeyChar))
                                    Console.WriteLine("\b \b");
                            }
                            else
                            {
                                if (!Char.IsControl(key21.KeyChar))
                                    number21 += key21.KeyChar;
                            }
                            if (key21.Key == ConsoleKey.Backspace && number21.Length > 0)
                            {
                                number21 = number21.Remove(number21.Length - 1, 1);
                                    Console.WriteLine("\b");
                            }
                        }
                        if (number21.Length == 0)
                        {
                               Console.WriteLine("Небыла введена площадь квартиры");
                        }
                        plocha = Convert.ToInt32(number21);
                         Console.WriteLine("Введите стоимость квартиры");
                        var key22 = new ConsoleKeyInfo();
                        var number22 = "";
                        while ((key22 = Console.ReadKey()).Key != ConsoleKey.Enter)
                        {
                            if (!Char.IsDigit(key22.KeyChar))
                            {
                                if (!Char.IsControl(key22.KeyChar))
                                    Console.WriteLine("\b \b");
                            }
                            else
                            {
                                if (!Char.IsControl(key22.KeyChar))
                                    number22 += key22.KeyChar;
                            }
                            if (key22.Key == ConsoleKey.Backspace && number22.Length > 0)
                            {
                                number22 = number22.Remove(number22.Length - 1, 1);
                                    Console.WriteLine("\b");
                            }
                        }
                        if (number22.Length == 0)
                        {
                               Console.WriteLine("Небыла введена стоимость квартиры");
                        }
                        cena = Convert.ToInt32(number22);
                        
                        SqlConnection myConnection4 = new SqlConnection("user id=admin;" +
                        "password=admin;" +"server=localhost;" +"Trusted_Connection=yes;" +
                        "database=ned; " +"connection timeout=1");
                        try
                        {
                            myConnection4.Open();
                            SqlParameter myParam6 = new SqlParameter("@Param6", SqlDbType.Int);
                            myParam6.Value = kodvlad;
                            SqlParameter myParam7 = new SqlParameter("@Param7", SqlDbType.NVarChar, 50);
                            myParam7.Value = gorod;
                            SqlParameter myParam8 = new SqlParameter("@Param8", SqlDbType.NVarChar, 50);
                            myParam8.Value = metro;
                            SqlParameter myParam9 = new SqlParameter("@Param9", SqlDbType.NVarChar, 50);
                            myParam9.Value = ylica;
                            SqlParameter myParam10 = new SqlParameter("@Param10", SqlDbType.Int);
                            myParam10.Value = dom;
                            SqlParameter myParam11 = new SqlParameter("@Param11", SqlDbType.Int);
                            myParam11.Value = nomer;
                            SqlParameter myParam12 = new SqlParameter("@Param12", SqlDbType.Int);
                            myParam12.Value = etazn;
                            SqlParameter myParam13 = new SqlParameter("@Param13", SqlDbType.Int);
                            myParam13.Value = komnat;
                            SqlParameter myParam14 = new SqlParameter("@Param14", SqlDbType.Int);
                            myParam14.Value = plocha;
                            SqlParameter myParam15 = new SqlParameter("@Param15", SqlDbType.Int);
                            myParam15.Value = cena;
                            SqlParameter myParam1 = new SqlParameter("@Param1", SqlDbType.Int);
                            myParam1.Value = id;
                            SqlCommand myCommand4 = new SqlCommand(@"UPDATE  ned.dbo.Квартиры SET  КодВладельца = @Param6,"+
                            "Город=@Param7,Метро=@Param8,Улица=@Param9,Дом=@Param10,НомерКвартиры=@Param11,Этажность=@Param12,"+
                            "Комнат=@Param13,Площадь=@Param14,Стоимость=@Param15 WHERE id=@Param1", myConnection4);
                            myCommand4.Parameters.Add(myParam1);
                            myCommand4.Parameters.Add(myParam6);
                            myCommand4.Parameters.Add(myParam7);
                            myCommand4.Parameters.Add(myParam8);
                            myCommand4.Parameters.Add(myParam9);
                            myCommand4.Parameters.Add(myParam10);
                            myCommand4.Parameters.Add(myParam11);
                            myCommand4.Parameters.Add(myParam12);
                            myCommand4.Parameters.Add(myParam13);
                            myCommand4.Parameters.Add(myParam14);
                            myCommand4.Parameters.Add(myParam15);
                            myCommand4.ExecuteNonQuery();
                            myConnection4.Close();
                            Console.WriteLine("\nИзменения внесены\n");
                             break;
                         }
                        catch (Exception ex)
                        {
                            Console.WriteLine(ex.Message); break;
                        }
первый Console.Writline подчеркивает волнистой линей и пишет "Найден нечитаемый код" (Unreachable code detected)
0
 Аватар для kodv
1449 / 1121 / 347
Регистрация: 11.04.2011
Сообщений: 2,621
17.09.2014, 08:40
вредина, по поводу Value погоярчился - я не заметил, что вы его задаете. myParam1 вы в коллекцию забывали добавлять. В новом коде вы его в колекцию добавляете. Изменения стали сохраняться?
Цитата Сообщение от вредина Посмотреть сообщение
первый Console.Writline подчеркивает волнистой линей и пишет "Найден нечитаемый код" (Unreachable code detected)
Вообще, такое предупреждение говорит о том, что код, к оторому оно относится, никогда не будет выполнен, а значит не имеет смысла. Первый Console.WriteLine - это Console.WriteLine("Введите город"). В вашем коде это первая строка. Чтобы узнать, почему программа не дойдет до этой строки, нужно видеть, какой код находится перед этой строкой.
0
0 / 0 / 3
Регистрация: 08.10.2012
Сообщений: 141
17.09.2014, 21:36  [ТС]
после catch идет строка "Console.Writeline("Введите город")
C#
1
2
3
4
  catch (Exception ex)
                        {
                            Console.WriteLine(ex.Message); break;
                        }
Добавлено через 10 часов 27 минут
может мне полностью код прикрепить?
0
 Аватар для kodv
1449 / 1121 / 347
Регистрация: 11.04.2011
Сообщений: 2,621
18.09.2014, 13:08
вредина, лучше полностью, а то из тех кусков, которые здесь есть, не особа понятна природа данного предупреждения.
0
0 / 0 / 3
Регистрация: 08.10.2012
Сообщений: 141
18.09.2014, 16:11  [ТС]
а как лучше? здесь можно только 10к символов, а там 16к)
я скину в архиве вечером
спасибо за помощь)
0
0 / 0 / 3
Регистрация: 08.10.2012
Сообщений: 141
18.09.2014, 22:56  [ТС]
вот скидываю полностью, 5-ый case
Вложения
Тип файла: rar kursa4.rar (3.48 Мб, 5 просмотров)
0
 Аватар для kodv
1449 / 1121 / 347
Регистрация: 11.04.2011
Сообщений: 2,621
19.09.2014, 05:16
вредина, перепроверьте архив с проектом. У меня скачался проект на C++ на 48 строк с учетом пустых.
0
0 / 0 / 3
Регистрация: 08.10.2012
Сообщений: 141
19.09.2014, 08:14  [ТС]
извиняюсь, не тот архив)
Вложения
Тип файла: rar kursach.rar (35.8 Кб, 6 просмотров)
0
 Аватар для kodv
1449 / 1121 / 347
Регистрация: 11.04.2011
Сообщений: 2,621
19.09.2014, 09:23
Лучший ответ Сообщение было отмечено вредина как решение

Решение

вредина, Перед упомянутой строкой у вас идет оператор try-catch, обе секции которого заканчиваются оператором break, который, в свою очередь, приводит к прерыванию выполнения кода оператора switch с переходом к следующему за switch оператору. То есть код, между упомянутым выше try-catch и меткой case "6" не будет выполнен никогда. Надеюсь, вы сами устраните эту логическую ошибку.
1
0 / 0 / 3
Регистрация: 08.10.2012
Сообщений: 141
21.09.2014, 17:17  [ТС]
kodv, спасибо, нашел, исправил, все работает
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
21.09.2014, 17:17
Помогаю со студенческими работами здесь

Не сохраняются данные в БД
SqlConnection sqlcon = new SqlConnection(connect); try { sqlcon.Open(); ...

Не сохраняются данные
Добрый день. Кто сможет подсказать, ситуация следующая: Есть приложение WinForm и бд MySQL, при вводе данных в компонент datagridview и...

Не сохраняются данные в БД
При подключении БД Access просит создать копию БД нажимаю да. Когда начинаю заполнять форму данные заносятся не в БД к которой делал...

Не сохраняются данные
Сделал пример ввод данных в бд access по ссылке https://youtu.be/Aiu6ncsedx8?t=5m24s, запускаешь программу она вводит данные сохраняет их в...

Не сохраняются данные в БД
Здравствуйте! Пишу приложение для КПК - база данных. При добавлении записей они не сохраняются в БД. Использую SQLCe 1. Добавил...


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

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Новые блоги и статьи
Оттенки серого
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
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru