Как ввести значения флажка SELECTED в базе данных, используя C #, SQL Server? - PullRequest
0 голосов
/ 01 января 2019

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

Когда пользователь нажимает на какой-либо флажок, выбранное значение флажка должно быть вставлено в его столбец в таблице базы данных.Есть идеи, как мне это сделать?

Я пробовал этот код, но он не работает.Только первое значение флажка вставляется в его собственный столбец, остальные столбцы не затрагиваются.

protected void Button2_Click(object sender, EventArgs e)
{
     SqlConnection cnm = new SqlConnection(connStr);

     cnm.Open();

     if (CheckBox1.Checked)
     {
            SqlCommand cmd = new SqlCommand("INSERT INTO services(artist) VALUES (@artist)", cnm);
            cmd.Parameters.AddWithValue("@artist", CheckBox1.Checked);
            cmd.ExecuteReader();
     }
     else if (CheckBox2.Checked)
     {
            SqlCommand cmd1 = new SqlCommand("INSERT INTO services(apprepair) VALUES (@apprepair)", cnm);
            cmd1.Parameters.AddWithValue("@apprepair", CheckBox2.Checked);
            cmd1.ExecuteReader();
     }
}

Вот разметка asp.net:

<tr>
    <td style="font-family:Muli, sans-serif;">
        <div class="form-check">
            <asp:CheckBox ID="CheckBox1" runat="server"/>
            <label class="form-check-label" style="color:rgb(255,15,15);font-size:20px;" formmethod="post">Artist and Fine Arts&nbsp;</label>
        </div>
    </td>
    <td>
        <div class="form-check">
            <asp:CheckBox ID="CheckBox2" runat="server"/>
            <label class="form-check-label" style="color:rgb(36,0,255);font-family:Muli, sans-serif;font-size:20px;">Appliance Repair</label>
        </div>
    </td>
</tr>
<tr>
    <td>
        <div class="form-check">
            <asp:CheckBox ID="CheckBox3" runat="server"/>
            <label class="form-check-label" runat="server" style="color:rgb(255,0,0);font-family:Muli, sans-serif;font-size:20px;"> Service and Repairs</label>
        </div>
    </td>
    <td>
        <div class="form-check">
            <asp:CheckBox ID="CheckBox4" runat="server"/>
            <label class="form-check-label" runat="server" style="color:rgb(20,0,255);font-family:Muli, sans-serif;font-size:20px;">Carpenter&nbsp;</label>
        </div>
    </td>
</tr>
<tr>
    <td>
        <div class="form-check">
            <asp:CheckBox ID="CheckBox5" runat="server"/>
            <label class="form-check-label"  style="color:rgb(255,0,0);font-family:Muli, sans-serif;font-size:20px;">Electrical and Electronics&nbsp;</label>
        </div>
    </td>
    <td>
        <div class="form-check">
             <asp:CheckBox ID="CheckBox6" runat="server"/>
             <label class="form-check-label"  style="color:rgb(51,0,255);font-family:Muli, sans-serif;font-size:20px;">I.T Solutions&nbsp;</label>
        </div>
    </td>
</tr>

.... и так далее, и так далеевперед ........

Ответы [ 2 ]

0 голосов
/ 01 января 2019

проблема не в SQL, а в вашем коде C #.

if (CheckBox1.Checked)
        {
            SqlCommand cmd = new SqlCommand("INSERT INTO services(artist) VALUES (@artist)", cnm);
            cmd.Parameters.AddWithValue("@artist", CheckBox1.Checked);
            cmd.ExecuteReader();

        }

        **else if (CheckBox2.Checked)-- Issue is Here**
        {
            SqlCommand cmd1 = new SqlCommand("INSERT INTO services(apprepair) VALUES (@apprepair)", cnm);
            cmd1.Parameters.AddWithValue("@apprepair", CheckBox2.Checked);
            cmd1.ExecuteReader();
        }

Во втором If, если вы используете Else if, так что если установлен флажок 1st, остальные условия не будутбыть казненным.Вместо этого вы можете использовать только IF вместо ELSE IF

ИЛИ

Вы можете напрямую использовать следующий подход.

SqlCommand cmd = new SqlCommand("INSERT INTO services(artist) VALUES (@artist)", cnm);
cmd.Parameters.AddWithValue("@artist", CheckBox1.Checked);
cmd.ExecuteNonQuery(); -- Since Insert Statement Wont have any Retun values, Use ExecuteNonQuery

SqlCommand cmd1 = new SqlCommand("INSERT INTO services(apprepair) VALUES (@apprepair)", cnm);
cmd1.Parameters.AddWithValue("@apprepair", CheckBox2.Checked);
cmd.ExecuteNonQuery();
0 голосов
/ 01 января 2019

Установите имена полей в Tag ваших флажков, например, установите «artist» в Tag of CheckBox1, затем напишите по нажатию кнопки:

foreach (Control control in Controls)
    if (control is CheckBox)
    {            
        SqlCommand cmd = new SqlCommand($"INSERT INTO services({(control as CheckBox).Tag.ToString()}) VALUES (@a)", cnm);
        cmd.Parameters.AddWithValue("@a", (control as CheckBox).Checked);
        cmd.ExecuteReader();        
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...