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

Не могу добавить строку

26.10.2010, 22:44. Показов 858. Ответов 1
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Не могу добавить строку в БД. Выскакивает исключение, ругающееся на нарушение целостности БД.Причем добавление проходит успешно во все таблицы кроме PersAdress!Вот ошибка:
Не могу добавить строку

Вот создание таблиц в БД:
SQL
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
                String addstr = "USE " + FileName + ";" +
                    "CREATE TABLE Person(id_person INT IDENTITY(1, 1) NOT NULL," +
                    "FirstName NTEXT NULL," +
                    "SecondName NTEXT NULL," +
                    "LastName NTEXT NULL," +
                    "CONSTRAINT prim_pers1 PRIMARY KEY (id_person));" +
                    
                    "CREATE TABLE Adress(id_adress INT IDENTITY(1, 1) NOT NULL," +
                    "City NTEXT NULL," +
                    "Street NTEXT NULL," +
                    "House NTEXT NULL," +
                    "Flat NTEXT NULL,"+
                    "CONSTRAINT prim_adr1 PRIMARY KEY (id_adress));" +
 
                    "CREATE TABLE Phone(id_phone INT IDENTITY(1, 1) NOT NULL," +
                    "Operator NTEXT NULL," +
                    "Number NTEXT NULL," +
                    "CONSTRAINT prim_phone1 PRIMARY KEY (id_phone));" +
                    
                    "CREATE TABLE PersAdress(id_person INT NOT NULL," +
                    "id_adress INT NOT NULL," +
                    "CONSTRAINT  prim_persadress1 FOREIGN KEY(id_person)" +
                    "REFERENCES Person(id_person) ON DELETE CASCADE," +
                    "CONSTRAINT  prim_persadress2 FOREIGN KEY(id_adress)" +
                    "REFERENCES Adress(id_adress) ON DELETE CASCADE);" +
                    
                    "CREATE TABLE PersPhone(id_person INT NOT NULL," +
                    "id_phone INT NOT NULL," +
                    "CONSTRAINT  prim_persphone1 FOREIGN KEY(id_person)" +
                    "REFERENCES Person(id_person) ON DELETE CASCADE," +
                    "CONSTRAINT  prim_persphone2 FOREIGN KEY(id_phone)" +
                    "REFERENCES Phone(id_phone) ON DELETE CASCADE)
Вот логика вставки:
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
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
                SqlConnection conn = new SqlConnection();
                conn.ConnectionString = ConnClass.ConnString;
                string Str = string.Format("INSERT INTO Person (FirstName,SecondName,LastName) VALUES ('{0}','{1}','{2}')", AddRowClass.FirstName, AddRowClass.SecondName, AddRowClass.LastName);
                using (SqlCommand cmd = new SqlCommand(Str,conn))
                {
                    try
                    {
                        conn.Open();
                        cmd.ExecuteNonQuery();
                        conn.Close();
                    }
                    catch (System.Exception ex)
                    {
                        MessageBox.Show(ex.ToString(), "MyProgram", MessageBoxButtons.OK, MessageBoxIcon.Information);
                    }
                    finally
                    {
                        if (conn.State == ConnectionState.Open)
                        {
                            conn.Close();
                        }
                    }
                }
 
                string Str1 = string.Format("INSERT INTO Phone (Operator,Number) VALUES ('{0}','{1}')", AddRowClass.Operator, AddRowClass.Number);
                using (SqlCommand cmd = new SqlCommand(Str1, conn))
                {
                    try
                    {
                        conn.Open();
                        cmd.ExecuteNonQuery();
                        conn.Close();
                    }
                    catch (System.Exception ex)
                    {
                        MessageBox.Show(ex.ToString(), "MyProgram", MessageBoxButtons.OK, MessageBoxIcon.Information);
                    }
                    finally
                    {
                        if (conn.State == ConnectionState.Open)
                        {
                            conn.Close();
                        }
                    }
                }
 
                string Str3 = string.Format("INSERT INTO Adress (City,Street,House,Flat) VALUES ('{0}','{1}','{2}','{3}')", AddRowClass.City, AddRowClass.Street, AddRowClass.House, AddRowClass.Flat);
                using (SqlCommand cmd = new SqlCommand(Str3, conn))
                {
                    try
                    {
                        conn.Open();
                        cmd.ExecuteNonQuery();
                        conn.Close();
                    }
                    catch (System.Exception ex)
                    {
                        MessageBox.Show(ex.ToString(), "MyProgram", MessageBoxButtons.OK, MessageBoxIcon.Information);
                    }
                    finally
                    {
                        if (conn.State == ConnectionState.Open)
                        {
                            conn.Close();
                        }
                    }
                }
 
                int MaxId_person = 0;
                string Str4 = string.Format("SELECT MAX(id_person) FROM Person");
                using (SqlCommand cmd = new SqlCommand(Str4, conn))
                {
                    try
                    {
                        conn.Open();
                        SqlDataReader reader;
                        reader = cmd.ExecuteReader(CommandBehavior.CloseConnection);
                        while (reader.Read())
                        {
                            MaxId_person = int.Parse(reader.GetValue(0).ToString());
                        }
                        reader.Close();
                    }
                    catch (System.Exception ex)
                    {
                        MessageBox.Show(ex.ToString(), "MyProgram", MessageBoxButtons.OK, MessageBoxIcon.Information);
                    }            
                }
 
                int MaxId_phone = 0;
                string Str5 = string.Format("SELECT MAX(id_phone) FROM Phone");
                using (SqlCommand cmd = new SqlCommand(Str5, conn))
                {
                    try
                    {
                        conn.Open();
                        SqlDataReader reader;
                        reader = cmd.ExecuteReader(CommandBehavior.CloseConnection);
                        while (reader.Read())
                        {
                            MaxId_phone = int.Parse(reader.GetValue(0).ToString());
                        }
                        reader.Close();
                    }
                    catch (System.Exception ex)
                    {
                        MessageBox.Show(ex.ToString(), "MyProgram", MessageBoxButtons.OK, MessageBoxIcon.Information);
                    }
                }
 
                int MaxId_adress = 0;
                string Str6 = string.Format("SELECT MAX(id_adress) FROM Adress");
                using (SqlCommand cmd = new SqlCommand(Str6, conn))
                {
                    try
                    {
                        conn.Open();
                        SqlDataReader reader;
                        reader = cmd.ExecuteReader(CommandBehavior.CloseConnection);
                        while (reader.Read())
                        {
                            MaxId_person = int.Parse(reader.GetValue(0).ToString());
                        }
                        reader.Close();
                    }
                    catch (System.Exception ex)
                    {
                        MessageBox.Show(ex.ToString(), "MyProgram", MessageBoxButtons.OK, MessageBoxIcon.Information);
                    }
                }
 
                string Str7 = string.Format("INSERT INTO PersPhone (id_person,id_phone) VALUES ('{0}','{1}')", MaxId_person, MaxId_phone);
                using (SqlCommand cmd = new SqlCommand(Str7, conn))
                {
                    try
                    {
                        conn.Open();
                        cmd.ExecuteNonQuery();
                        conn.Close();
                    }
                    catch (System.Exception ex)
                    {
                        MessageBox.Show(ex.ToString(), "MyProgram", MessageBoxButtons.OK, MessageBoxIcon.Information);
                    }
                    finally
                    {
                        if (conn.State == ConnectionState.Open)
                        {
                            conn.Close();
                        }
                    }
                }
 
                string Str8 = string.Format("INSERT INTO PersAdress (id_person,id_adress) VALUES ('{0}','{1}')", MaxId_person, MaxId_adress);
                using (SqlCommand cmd = new SqlCommand(Str8, conn))
                {
                    try
                    {
                        conn.Open();
                        cmd.ExecuteNonQuery();
                        conn.Close();
                    }
                    catch (System.Exception ex)
                    {
                        MessageBox.Show(ex.ToString(), "MyProgram", MessageBoxButtons.OK, MessageBoxIcon.Information);
                    }
                    finally
                    {
                        if (conn.State == ConnectionState.Open)
                        {
                            conn.Close();
                        }
                    }
                }
Не ругайте за большое количество запросов, исправлю!=)
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
26.10.2010, 22:44
Ответы с готовыми решениями:

Не могу добавить строку StringGrid
Здравствуйте! Пытаюсь добавить строку в StringGrid. И так писал StringGrid1->RowCount++; и...

Не могу добавить строку в таблицу через SqlQuery
Всем доброго времени суток. Пытаюсь добавить поле в таблицу sqlite (sqlQuery2.append или insert)....

Работа со списком...Не могу добавить функцию добавить элементы в начало списка...
В моей программе есть функция добавить элементы, она добавляет элементы в конец списка, уже очень...

Добавить строку в строку перед определённым словом
Как добавить строку в строку перед определённым словом, в моем случаи это sql query и мне надо...

1
4 / 4 / 1
Регистрация: 12.10.2010
Сообщений: 32
27.10.2010, 00:57  [ТС] 2
только вместо ON DELETE CASCADE надо ON UPDATE CASCADE. Но все равно, проблема остается

Добавлено через 1 час 41 минуту
Извините!Ложная тревога! ОПЕЧАТКА В КОДЕ!
0
27.10.2010, 00:57
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
27.10.2010, 00:57
Помогаю со студенческими работами здесь

DataTable: добавить строку, удалить строку
Есть DataTable В него успешно добавляю строку: DataTABLE.Rows.Add(Переменная) Как удалить...

Добавить строку
Выручите пожалуйста) Есть код , но его надо доработать Программка высчитывает в строке наиболее...

Добавить строку в DataGridView
Здравствуйте, подскажите пожалуйста как добавлять строки программно в datagridview? я нашел такой...

Добавить строку в файл
Не знаю как добавить в файл строку, подскажите как правильно. void CPhBook::Add(){ char...


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

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