Форум программистов, компьютерный форум, киберфорум
C#: Базы данных, ADO.NET
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.80/5: Рейтинг темы: голосов - 5, средняя оценка - 4.80
0 / 0 / 0
Регистрация: 15.04.2018
Сообщений: 3
1

Не добавляются данные в таблицу БД

09.05.2018, 23:20. Показов 901. Ответов 5
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Пытаюсь поочередно добавить данные в 3 таблицы БД: улица, адрес и постоянные клиенты. В улицу и адрес ничего не сохраняется, хотя программа заходит в блок (я чекала). В клиента инфа сохраняется, но с неправильным кодом адреса(последним в таблице, но предполагается, что последним будет только что добавленный). Я не могу понять почему именно в эти две таблицы не добавляются данные, хоть я и делала все одинаково. Уверенна, что просто упускаю что-то мелкое и глупое, помогите, пожалуйста.

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
private void button1_Click(object sender, EventArgs e)
        {
            try 
            {
                int clientCode = this.vievClientDataGridView.Rows.Count;
                string name = textBox2.Text;
                string surname = textBox1.Text;
                string phone = textBox3.Text;
                int adressCode = this.pizzaDataSet.Адреса.Rows.Count+1;
                string street = textBox4.Text;
                string building = textBox5.Text;
                string enter = textBox6.Text;
                int streetType;
                //с парсингом valueMember какая-то фигня, поэтому так
                switch (comboBox1.SelectedIndex)
                {
                    case 0: streetType = 1; break;
                    case 1: streetType = 2; break;
                    case 2: streetType = 3; break;
                    case 3: streetType = 4; break;
                    case 4: streetType = 5; break;
                    default: streetType = 1; break ;
 
                }
                int streetCode = this.pizzaDataSet.Вулиця.Rows.Count + 1;
                bool streetExist = false;
                bool adressExist = false;
 
                //проверяю, есть ли уже улица в базе
          /*      for (int i = 0; i < pizzaDataSet.Вулиця.Rows.Count - 1; i++)
                {
                    if (street.Equals(pizzaDataSet.Вулиця.Rows[i][1].ToString()) && streetType.ToString().Equals((pizzaDataSet.Вулиця.Rows[i][2].ToString())))
                    {
                        streetCode = i + 1;
                        streetExist = true;
                    }
                }*/
                conn = new SqlConnection();
                conn.ConnectionString = "integrated security=SSPI;data source=ADMIN\\SQLEXPRESS; persist security info=false; initial catalog=Pizza";
                conn.Open();
 
                if (!streetExist)
                {
                    if (name.Equals("") || surname.Equals("") || phone.Equals("") || street.Equals("") || building.Equals("")) throw new EmptyFieldException("Не всі поля заповнені");
                    SqlCommand myCommand = conn.CreateCommand();
 
                    // сперва добавляю улицу
 
                    myCommand.CommandText = "insert into Вулиця(КодВулиці, Назва, КодТипуВулиці) values(@streetCode, @street, @streetType)";
                    myCommand.Parameters.Add("@streetCode", SqlDbType.Int, 4);
                    myCommand.Parameters.Add("@street", SqlDbType.NVarChar, 50);
                    myCommand.Parameters.Add("@streetType", SqlDbType.Int, 4);
                    myCommand.Parameters["@streetCode"].Value = streetCode + 1;
                    myCommand.Parameters["@street"].Value = street;
                    myCommand.Parameters["@streetType"].Value = streetType;
                    this.вулицяTableAdapter.Fill(this.pizzaDataSet.Вулиця);
                    MessageBox.Show("Street" + streetCode + "added");
                }
                //проверяю, есть ли адрес в базе
           /*     for (int i = 0; i < pizzaDataSet.Адреса.Rows.Count - 1; i++) 
                {
                    if (streetCode.ToString().Equals(pizzaDataSet.Адреса.Rows[i][3].ToString()) && building.Equals(pizzaDataSet.Адреса.Rows[i][1])
                                && enter.Equals(pizzaDataSet.Адреса.Rows[i][2])) 
                    {
                        adressExist = true;
                        adressCode = i + 1;
                    }
                }*/
 
                if (!adressExist)
                {
                    // добавляю адрес
                    SqlCommand myCommand2 = conn.CreateCommand();
                    myCommand2.CommandText = "insert into Адреса(КодАдреси, Будівля, [Під'їзд], КодВулиці) values(@adresCode, @building, @enter, @streetCode)";
                    myCommand2.Parameters.Add("@adressCode", SqlDbType.Int, 4);
                    myCommand2.Parameters.Add("@building", SqlDbType.NVarChar, 4);
                    myCommand2.Parameters.Add("@enter", SqlDbType.NVarChar, 4);
                    myCommand2.Parameters.Add("@streetCode", SqlDbType.Int, 4);
                    myCommand2.Parameters["@adressCode"].Value = adressCode+1;
                    myCommand2.Parameters["@building"].Value = building;
                    myCommand2.Parameters["@enter"].Value = enter;
                    myCommand2.Parameters["@streetCode"].Value = streetCode;
          //          this.адресаTableAdapter.Fill(this.pizzaDataSet.Адреса);
                    MessageBox.Show("adress " + adressCode + " added");
                }
                // и наконец-то добавляю клиента
                SqlCommand myCommand3 = conn.CreateCommand();
                myCommand3.CommandText = "insert into ПостійніКлієнти(КодКлієнта, НомерТелефону, Знижка, КодАдреси, [Ім'я], Прізвище) " +
                                            "values(@clientCode, @phone, @discount, @adressCode, @name, @surname)";
                myCommand3.Parameters.Add("@clientCode", SqlDbType.Int, 4);
                myCommand3.Parameters.Add("@phone", SqlDbType.NVarChar, 12);
                myCommand3.Parameters.Add("@discount", SqlDbType.Decimal, 3);
                myCommand3.Parameters.Add("@adressCode", SqlDbType.Int, 4);
                myCommand3.Parameters.Add("@name", SqlDbType.NVarChar, 20);
                myCommand3.Parameters.Add("@surname", SqlDbType.NVarChar, 20);
                myCommand3.Parameters["@clientCode"].Value = clientCode;
                myCommand3.Parameters["@phone"].Value = phone;
                myCommand3.Parameters["@discount"].Value = 0.05;
                myCommand3.Parameters["@adressCode"].Value = adressCode;
                myCommand3.Parameters["@name"].Value = name;
                myCommand3.Parameters["@surname"].Value = surname;
 
                int uspIzm = myCommand3.ExecuteNonQuery();
                if (uspIzm != 0) MessageBox.Show("Зміни внесені", "Зміна запису");
                else MessageBox.Show("Не вдалося внести зміни", "Зміна запису");
            }
            catch (EmptyFieldException ex)
            {
                MessageBox.Show(ex.Message, "Застереження", MessageBoxButtons.OK, MessageBoxIcon.Warning);
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.ToString());
            }
            finally
            {
                conn.Close();
            }
            this.vievClientTableAdapter.Fill(this.pizzaDataSet.VievClient);
            textBox1.Clear();
            textBox2.Clear();
            textBox3.Clear();
            textBox4.Clear();
            textBox5.Clear();
            textBox6.Clear();
        }
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
09.05.2018, 23:20
Ответы с готовыми решениями:

Не добавляются данные в таблицу
Всем доброго времени суток. В локальной базе данных я создал таблицу изменений для синхронизации...

Не обновляются/добавляются данные данные через клиент
привет форумчане,не обновляются данные через клиент при нажатии на кнопку ничего не происходит...

Не добавляются данные в БД
Добрый день форумчане. Совсем недавно начал изучать Entity Framework 6 . На данный момент у меня не...

Не добавляются данные в БД
Я создал базу данных access и связал ее с visual studio 2013, создал в visual 6 форм и на все...

5
Эксперт .NET
12073 / 8383 / 1280
Регистрация: 21.01.2016
Сообщений: 31,578
10.05.2018, 04:24 2
elektroforez, говнище несусветное, а не код.

Вы сохраняете только клиентов. Для адреса и улицы (а улица не адрес, да?) вы создаёте команду, но не выполняете её (ExecuteNonQuery).

Ну и придумывать внешний ключ на запись на клиенте путём прибавления к количеству записей единицы... Это вообще туши свет.

C#
1
int streetCode = this.pizzaDataSet.Вулиця.Rows.Count + 1;
Спросите человека, который это вам написал, о чём и чем он думал.
2
54 / 48 / 31
Регистрация: 14.04.2015
Сообщений: 273
10.05.2018, 06:48 3
Usaga, после увиденных с 5 - по 12 строку кода....мне страшно стало смотреть ниже....прочитав твой ответ, пожалуй на этом остановлюсь и закрою страницу =)
0
0 / 0 / 0
Регистрация: 15.04.2018
Сообщений: 3
10.05.2018, 16:40  [ТС] 4
Спасибо, я просто впервые пытаюсь работать с базами. Объясните пж, что не так с прибавлением единицы?
0
Эксперт .NET
12073 / 8383 / 1280
Регистрация: 21.01.2016
Сообщений: 31,578
10.05.2018, 17:39 5
elektroforez, плохо в том, что так вообще не делается. Идентификаторы либо база должна генерировать (можно и через secuence), либо GUID-ы использовать.

Идентификаторы должны быть уникальными (на то они и идентификаторы, так ведь?), а если исходить из количества записей (как вы сделали), то уникальностью пахнуть не будет. Вот у вас пять записей, вы решили, что идентификатор следующей будете 5+1 = 6. Ок. Потом вы удалили одну запись и решили вставить следующую. Получается, что следующий идентификатор опять 6! Фигня, не находите?
1
0 / 0 / 0
Регистрация: 15.04.2018
Сообщений: 3
11.05.2018, 00:02  [ТС] 6
Действительно бред
Спасибо, что пояснили
0
11.05.2018, 00:02
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
11.05.2018, 00:02
Помогаю со студенческими работами здесь

Не добавляются данные в базу
Помогите, пожалуйста!! Не понимаю в чем ошибка. public partial class DealPlace :...

Почему не добавляются данные в базу
Ребят, подскажите начинающей. Вот код: sqlConnection1.Open(); SqlTransaction...

Не добавляются данные на сервер в базу Access
Всем привет! Есть страница новостей, в ней есть кнопка добавить новость. Если я добавляю...

Не добавляются данные в БД (Microsoft SqlServer Compact Edition)
Проблема с добавлением данных. К базе все подключается. Думаю проблема в строке подключения. Мне...


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru