Member 14086524 Ответов: 1

Как отключить флажок после вставки значения в базу данных


 i'm trying this code, actually i'm trying to make bed booking.
please help me how can i do 


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

охраняемых недействительными btnSave_Click(объект отправителя, EventArgs в электронной)
{
строка bednumber, Bedstatus;
пробовать
{
если (чккк.Проверено == верно)
{
bednumber = "первый этаж 201";
}
еще если (chk1.Проверено == верно)
{
bednumber = "первый этаж 202";
}
еще если (chk2.Проверено == верно)
{
bednumber = "первый этаж 203";
}
остальное, если (chk3.Проверено == верно)
{
bednumber = "первый этаж 204";
}
еще если (chk4.Проверено == верно)
{
bednumber = "первый этаж 205";
}
остальное, если (chk5.Проверено == верно)
{
bednumber = "первый этаж 206";
}
остальное, если (chk6.Проверено == верно)
{
bednumber = "первый этаж 207";
}
остальное, если (chk7.Проверено == верно)
{
bednumber = "первый этаж 208";
}
еще
bednumber = "не";
если (ChkActive.Проверен)
{
Bedstatus = "Забронировано";
}
еще
Bedstatus = "Забронировано";
Коннектикут.Открыть();
Команда sqlcommand cmd и = новая команда sqlcommand("если не существует(выберите * от BedBooking где BedNumber = '" + bednumber + "')вставить в BedBooking(PatientName, BedNumber) значения('" + txtName.Text + "','" + bednumber + "')", conn);
УМК.Метод executenonquery();
Sqlcommand, который cmd1 = новая команда sqlcommand("если не существует(выберите * от AddBedNumber где BedNumber = '" + bednumber + "') вставить в AddBedNumber(BedNumber, активный) значения('" + bednumber + "','" + Bedstatus + "')", соед);
cmd1.Метод executenonquery();
Коннектикут.Закрывать();
Ответ.Напишите("alert('спасибо !!! Ваше бронирование прошло успешно!!')");
}
поймать (исключение бывший)
{
}
}

F-ES Sitecore

Вам нужна команда SQL, которая возвращает все забронированные номера, чтобы вы могли отключить соответствующие флажки при загрузке страницы. Похоже, что вы жестко закодировали большую часть своих данных о номерах, что не очень хорошая идея, если бы вы получили эти данные из базы данных, вы, вероятно, могли бы вернуть все номера, а также то, что было забронировано в данный момент в одном запросе.

Richard Deeming

new SqlCommand("IF NOT EXISTS(SELECT * FROM BedBooking WHERE BedNumber = '" + bednumber + "')INSERT INTO BedBooking(PatientName, BedNumber) VALUES('" + txtName.Text + "','" + bednumber + "')", conn);


Не делай этого так!

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

НИКОГДА используйте конкатенацию строк для построения SQL-запроса. ВСЕГДА используйте параметризованный запрос.

Все, что вы хотели знать о SQL-инъекции (но боялись спросить) | Трой Хант[^]
Как я могу объяснить SQL-инъекцию без технического жаргона? | Обмен Стеками Информационной Безопасности[^]
Шпаргалка по параметризации запросов | OWASP[^]

1 Ответов

Рейтинг:
2

Vincent Maverick Durano

Прежде чем мы перейдем к решению вашей основной проблемы, ваш код нуждается в некоторой очистке. Во-первых, сделайте привычкой класть объекты, которые едят ресурсы, такие как SqlConnection и SqlCommand в using statement чтобы убедиться, что объекты будут правильно утилизированы и закрыты после их использования.

Во-вторых, как уже было предложено в разделе комментариев, добавление значений непосредственно к вашему SQL-запросу-это большое нет-нет, поскольку это потенциально может привести к SQL Injection attack Используйте параметризацию запроса, чтобы избежать этого: защитите свои данные: Предотвращение SQL-инъекции[^] [^]

В-третьих, используйте a CheckBoxList Контроль, так что вы можете легко связать его с результатом из вашей базы данных. Вот пример, на который вы можете сослаться: Сохраните выбранные элементы CheckBoxList и сохраните их в обратных сообщениях.[^]