Вставка значения из поля шаблона Checkbox в бит типа поля базы данных sql

#c# #asp.net

#c# #asp.net

Вопрос:

У меня есть gridview, в котором есть поле шаблона Checkbox, я использую код C #, и в основном, когда пользователь проверяет все флажки в представлении datagrid, я хочу добавить эти значения в базу данных SQL с битом поля datatype. Вот мой код на данный момент;

 protected void SaveRegisterButton_Click(object sender, EventArgs e)
{
            SqlConnection connection;
            SqlCommand command;
            int numRowsAdded;
            int id;
            Boolean AttendanceChecked;
    foreach (GridViewRow row in GridView2.Rows)
    {
        if (((CheckBox)row.FindControl("AttendanceCheckBox")).Checked)
        {


            try
            {
                // Connecting to the database using the connection string in the web.config file
                connection = new SqlConnection(WebConfigurationManager.ConnectionStrings["RegisterConnectionString"].ConnectionString);

                // Create an INSERT Sql statement
                // To prevent an Sql injection attack, we add parameters with names starting with an @ symbol
                command = new SqlCommand("INSERT INTO Attendance(Present, StudentID, LessonID) VALUES(@AttendanceChecked, @StudentID, @LessonID)",


                // Replace the parameters with the actual values read from the form
                //command.Parameters.AddWithValue("AttendanceChecked", AttendanceCheckBox);
  

Как мне передать значение элемента управления checkbox в поле базы данных sql с типом данных Bit? Любая помощь приветствуется, заранее спасибо!

Ответ №1:

Прежде всего, приведенный ниже код вызовет исключение с нулевой ссылкой, если флажок не найден (например, если это верхний / колонтитул).

 if (((CheckBox)row.FindControl("AttendanceCheckBox")).Checked)
  

Единственное, что вы можете сохранить в битовом поле, это 1 или 0, тогда как «значением» флажка является текст. Вы действительно хотите выбрать, в какое поле сохранять, на основе значения, а затем значение для сохранения, на основе того, установлен ли флажок? Пожалуйста, уточните.

В дополнение к вашему обновлению попробуйте приведенный ниже код:

 foreach (GridViewRow row in GridView2.Rows)
    {
    CheckBox AttendanceCheckBox = row.FindControl("AttendanceCheckBox") as CheckBox;
    if (AttendanceCheckBox != null)
    {
       try
       {                
           connection = new SqlConnection(WebConfigurationManager.ConnectionStrings["RegisterConnectionString"].ConnectionString);
           SqlCommand command = new SqlCommand("INSERT INTO Attendance(Present, StudentID, LessonID) VALUES(@AttendanceChecked, @StudentID, @LessonID)");
           command.Parameters.AddWithValue("@AttendanceCheck",AttendanceCheckBox.Checked);
  

Вам также нужно будет добавить значения для @StudentID и @LessonID, используя тот же command.Parameters.AddWithValue метод.

Комментарии:

1. Извините, я имею в виду, что когда флажок установлен, я хочу сохранить 1 в бит поля типа данных, а когда он не установлен, я хочу сохранить 0 в бит поля типа данных. Спасибо за вашу помощь!