Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Вставляет пустые значения там, где это запрещено.  [new]
zak820
Member

Откуда: Minsk
Сообщений: 22
Есть таблица, где вставка пустого значения разрешена только в одном столбце, но если я на форме не заполню какое-либо другое поле, то запись все равно добавляется, хотя должна была появиться ошибка.

Вот запрос: string sql = "declare @Status int; INSERT INTO Status(Status, Citizenship, Disability, Pensioner, Reservist, Salary) VALUES ('" + comboBoxStatus.Text + "','"
+ comboBoxCitizenship.Text + "','" + comboBoxDisability.Text + "','" + Pensioner + "','" + Reservist + "','" + textBoxIncome.Text + "'); set @Status = SCOPE_IDENTITY();";


SqlConnection conn = new SqlConnection("Data Source=Name; Initial Catalog=adb1; Integrated Security=True");
SqlCommand cmdDataBase = new SqlCommand(sql, conn);

SqlDataReader myReader;
try
{
conn.Open();
myReader = cmdDataBase.ExecuteReader();
MessageBox.Show("Запись добавлена");
while (myReader.Read()) { }


}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}

К сообщению приложен файл. Размер - 31Kb
6 ноя 15, 13:54    [18378308]     Ответить | Цитировать Сообщить модератору
 Re: Вставляет пустые значения там, где это запрещено.  [new]
zak820
Member

Откуда: Minsk
Сообщений: 22


К сообщению приложен файл. Размер - 16Kb
6 ноя 15, 13:54    [18378313]     Ответить | Цитировать Сообщить модератору
 Re: Вставляет пустые значения там, где это запрещено.  [new]
Glory
Member

Откуда:
Сообщений: 104760
zak820
Вот запрос:

Это не запрос.
Это ваш клиентский код.

И "если я на форме не заполню какое-либо другое поле" не означаете, что в команду попадает NULL как значение для этого поля
6 ноя 15, 13:56    [18378331]     Ответить | Цитировать Сообщить модератору
 Re: Вставляет пустые значения там, где это запрещено.  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 7868
zak820,

не пустое, а "неизвестно", т.е. NULL. Запись добавляется потому, что для остальных колонок существуют ограничения умолчания.
6 ноя 15, 13:57    [18378338]     Ответить | Цитировать Сообщить модератору
 Re: Вставляет пустые значения там, где это запрещено.  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 7868
Кроме того, клиент может посылать серверу пустые значения строк вместо NULL.
6 ноя 15, 13:59    [18378364]     Ответить | Цитировать Сообщить модератору
 Re: Вставляет пустые значения там, где это запрещено.  [new]
o-o
Guest
zak820,

у вас там не NULL, а пустая строка ('').
NULL-ы студия так и подписывает, NULL
6 ноя 15, 14:01    [18378385]     Ответить | Цитировать Сообщить модератору
 Re: Вставляет пустые значения там, где это запрещено.  [new]
zak820
Member

Откуда: Minsk
Сообщений: 22
Спасибо.
6 ноя 15, 14:40    [18378740]     Ответить | Цитировать Сообщить модератору
 Re: Вставляет пустые значения там, где это запрещено.  [new]
Mind
Member

Откуда: Лучший город на Земле
Сообщений: 2322
zak820
Вот запрос: string sql = "declare @Status int; INSERT INTO Status(Status, Citizenship, Disability, Pensioner, Reservist, Salary) VALUES ('" + comboBoxStatus.Text + "','"
+ comboBoxCitizenship.Text + "','" + comboBoxDisability.Text + "','" + Pensioner + "','" + Reservist + "','" + textBoxIncome.Text + "'); set @Status = SCOPE_IDENTITY();";
Прочитайте про SQL injection и больше никогда так не делайте. А то кто-нибудь вам вместо своей зарплаты напишет TRUNCATE TABLE...
6 ноя 15, 23:28    [18381786]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить