Member 14127874 Ответов: 1

Как сохранить выбранные флажки и сохранить их в базе данных. Выбранный ответ будет только сохранен.


Сценарий примерно такой. У меня есть одиннадцать флажков, которые перечислены в форме, тогда пользователь будет выбирать только выбранный ответ, как 4 из 11 ответивших. Экс. Он выбирает номер 1,3,7,9 из одиннадцати флажков. Он выбирает собаку, лошадь, тигра и свинью. Четыре ответа будут сохранены в базе данных, а другие, которые не выбраны, не будут сохранены.
Мне нужна помощь в том, как это сделать в массиве или цикле . Заранее спасибо.

экс.
checkbox1 - это собака
checkbox2 - это кошка
checkbox3 - это лошадь
checkbox4 - это рыба
checkbox5 - это слон
checkbox6 - это курица
checkbox7 - это тигр
checkbox8 - это Лев
checkbox9 - это свинья
checkbox10 - это волк
checkbox11 - это дракон

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

Если Флажок Установлен32.Проверено И CheckBox33.Проверено И CheckBox34.Проверено И CheckBox35.Проверено И Чекбокс 36.Проверено И CheckBox37.Проверено И Галочка 38.Проверено И CheckBox39.Проверено И CheckBox40.Проверено И CheckBox2.Проверено И Отображения Checkbox3.Проверено = Истина Тогда
cmd7.CommandText = "вставить в ICT_Hardware(Hardware_Code, PSGC_code, ResDate) значения ('" &label112.Text & "' , '" & BunifuCustomTextbox9.Text & "', '" & DateTimePicker1.Текст & "')"
cmd7.Метод executenonquery()

cmd8.CommandText = "вставить в ICT_Hardware(Hardware_Code, PSGC_code, ResDate) значения ('" &label113.Text & "' , '" & BunifuCustomTextbox9.Text & "', '" & DateTimePicker1.Текст & "')"
cmd8.Метод executenonquery()

cmd9.CommandText = "вставить в ICT_Hardware(Hardware_Code, PSGC_code, ResDate) значения ('" &label114.Text & "' , '" & BunifuCustomTextbox9.Text & "', '" & DateTimePicker1.Текст & "')"
cmd9.Метод executenonquery()

cmd10.CommandText = "вставить в ICT_Hardware(Hardware_Code, PSGC_code, ResDate) значения ('" &label115.Text & "' , '" & BunifuCustomTextbox9.Text & "', '" & DateTimePicker1.Текст & "')"
cmd10.Метод executenonquery()

cmd11.CommandText = "вставить в ICT_Hardware(Hardware_Code, PSGC_code, ResDate) значения ('" &label116.Text & "' , '" & BunifuCustomTextbox9.Text & "', '" & DateTimePicker1.Текст & "')"
cmd11.Метод executenonquery()

cmd12.CommandText = "вставить в ICT_Hardware(Hardware_Code, PSGC_code, ResDate) значения ('" & Label117.Текст &ампер; "' , '" &амп; BunifuCustomTextbox9.Текст &ампер; "', '" &амп; DateTimePicker1.Текст & "')"
cmd12.Метод executenonquery()

cmd13.CommandText = "вставить в ICT_Hardware(Hardware_Code, PSGC_code, ResDate) значения ('" & Label118.Текст &ампер; "' , '" &амп; BunifuCustomTextbox9.Текст &ампер; "', '" &амп; DateTimePicker1.Текст & "')"
cmd13.Метод executenonquery()

cmd14.CommandText = "вставить в ICT_Hardware(Hardware_Code, PSGC_code, ResDate) значения ('" &label119.Text & "' , '" & BunifuCustomTextbox9.Text & "', '" & DateTimePicker1.Текст & "')"
cmd14.Метод executenonquery()

cmd20.CommandText = "вставить в ICT_Hardware(Hardware_Code, PSGC_code, ResDate) значения ('" &label132.Text & "' , '" & BunifuCustomTextbox9.Text & "', '" & DateTimePicker1.Текст & "')"
cmd20.Метод executenonquery()

cmd21.CommandText = "вставить в ICT_Hardware(Hardware_Code, PSGC_code, ResDate) значения ('" &label133.Text & "' , '" & BunifuCustomTextbox9.Text & "', '" & DateTimePicker1.Текст & "')"
cmd21.Метод executenonquery()

cmd22.CommandText = "вставить в ICT_Hardware(Hardware_Code, PSGC_code, ResDate) значения ('" &label134.Text & "' , '" & BunifuCustomTextbox9.Text & "', '" & DateTimePicker1.Текст & "')"
cmd22.Метод executenonquery()

конец, если
'-------------------------------------

Gerry Schmitz

Вы получаете зарплату за LOC?

Member 14127874

Нет, это не так.

Member 14127874

Я интерн.

1 Ответов

Рейтинг:
1

OriginalGriff

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

Когда вы объединяете строки, вы вызываете проблемы, потому что SQL получает такие команды, как:

SELECT * FROM MyTable WHERE StreetAddress = 'Baker's Wood'
Цитата, добавленная пользователем, завершает строку в том, что касается SQL, и вы получаете проблемы. Но могло быть и хуже. Если я приду и наберу вместо этого: "x';DROP TABLE MyTable;--", то SQL получит совсем другую команду:
SELECT * FROM MyTable WHERE StreetAddress = 'x';DROP TABLE MyTable;--'
Которые SQL видит как три отдельные команды:
SELECT * FROM MyTable WHERE StreetAddress = 'x';
Совершенно правильный выбор
DROP TABLE MyTable;
Вполне допустимая команда "удалить таблицу"
--'
А все остальное-это комментарии.
Так оно и происходит: выбирает любые совпадающие строки, удаляет таблицу из базы данных и игнорирует все остальное.

Поэтому всегда используйте параметризованные запросы! Или будьте готовы часто восстанавливать свою БД из резервной копии. Вы ведь регулярно делаете резервные копии, не так ли?

Когда вы исправите это во всем своем приложении, поработайте над этим: начните с того, что посмотрите на условие, которое вы хотите использовать: в данный момент он должен проверить все одиннадцать флажков, чтобы что-то сделать! Начните с "группировки" ваших флажков - возможно, поставьте их на панель.
Затем вы можете посчитать число, которое он проверил в цикле:
Dim count As Integer = 0

For Each c As Control In myPanel.Controls
    Dim cb As CheckBox = TryCast(c, CheckBox)
    If cb IsNot Nothing AndAlso cb.Checked Then
        count += 1
    End If
Next


Member 14127874

Жаль, что. Я постараюсь отладить его, используя ваше предложение/ответ. Спасибо

Member 14127874

Как сделать группировку флажков?

Member 14127874

То, как поставить его на панель. Можете ли вы отправить ссылку или видео? Всплывающее окно перестало всплывать.

OriginalGriff

Добавьте панель.
Перетащите на него флажки.