Usman Jaji Ответов: 1

Как решить набор ссылок объекта на экземпляр объекта C#


Привет,
У меня возникли проблемы с созданием нового прихода в моем приложении windows form, идея состоит в том, чтобы заставить систему проверить, существует ли введенное значение в базе данных, прежде чем сохранять имя прихода в базе данных. Это сделано идеально, но он не будет сохранен после проверки значения, и я получаю сообщение об ошибке, говорящее..

Что я уже пробовал:

частный недействительными методе button2_click(объект отправителя, EventArgs в электронной)
{
если (элемент textbox1.Текст == "")
{


Ящик для сообщений.Show("имя палаты не может быть оставлено пустым...", "Alert", MessageBoxButtons.Хорошо, MessageBoxIcon.Ошибка);
вернуть;
}

пробовать
{

строка че = @"(выбрать * из палаты, где Ward_Name = '" + текстовое поле textbox1.Текст + "')";
Команда sqlcommand cmd и = новая команда sqlcommand("вставить в ворд (Ward_Name, Ward_Type, Number_Occupant, Number_Bed) значения('" + текстовое поле textbox1.Текст + "', '" + элемент combobox1.Текст + "', '" + comboBox2.Текст + "','" + поле textbox2.Текст + "')", кон);
против.Открыть();
За исключением CDMA-sqlcommand объект = новый sqlcommand, который(че, кон);

тип int счетчик = (инт)за исключением CDMA.Executescalar так();
if (count > 0)
{
Ящик для сообщений.Показать("Эта палата уже существует");

}
еще
{

УМК.Метод executenonquery();
Ящик для сообщений.Показать("новый подопечный успешно добавлен");
}

против.Закрывать();
}

поймать (исключение бывший)
{

Ящик для сообщений.Показать(напр.сообщение);

}

наконец {

if (con.State == ConnectionState.Открыть)
против.Закрывать();


}

1 Ответов

Рейтинг:
2

Patrice T

Цитата:
Как решить набор ссылок объекта на экземпляр объекта C#

Вам нужно проверить, успешна ли ваша команда SQL или нет, прежде чем использовать ее результат. Поскольку ваш код подвержен SQL-инъекции, неудачного пользовательского ввода достаточно, чтобы он потерпел неудачу, и ввод может быть вредоносным.
string che = @"(select * from ward where Ward_Name = '" + textBox1.Text + "')";
SqlCommand cmd = new SqlCommand("insert into ward (Ward_Name, Ward_Type, Number_Occupant, Number_Bed) values('" + textBox1.Text + "', '" + comboBox1.Text + "', '" + comboBox2.Text + "','" + textBox2.Text + "')", con);

Не решение вашего вопроса, а еще одна проблема, которая у вас есть.
Никогда не создавайте SQL-запрос путем объединения строк. Рано или поздно вы сделаете это с помощью пользовательских вводов, и это откроет дверь к уязвимости под названием "SQL-инъекция", она опасна для вашей базы данных и подвержена ошибкам.
Одна кавычка в имени - и ваша программа выйдет из строя. Если пользователь вводит имя, например "Брайан О'Коннер", может привести к сбою вашего приложения, это уязвимость SQL-инъекции, и сбой-это наименьшая из проблем, вредоносный пользовательский ввод, и он продвигается к командам SQL со всеми учетными данными.
SQL-инъекция - Википедия[^]
SQL-инъекция[^]
Атаки SQL-инъекций на примере[^]
PHP: SQL-инъекция - руководство пользователя[^]
Шпаргалка по предотвращению инъекций SQL - OWASP[^]