Sql 如何在更新查询中使用if语句?

Sql 如何在更新查询中使用if语句?,sql,checkbox,datagridview,sql-update,Sql,Checkbox,Datagridview,Sql Update,我想在选中复选框时阻止它。我有管理员和教员页面,当管理员阻止特定复选框时,它应该阻止所有教员的特定复选框。这些复选框在网格中。每个学院都有单独的登录,但所有学院都有相同的网格。当一个学院屏蔽特定复选框时,它也应屏蔽其他学院 当我运行教员页面时,它会阻止管理员已阻止的特定复选框,然后当我再次从教员页面提交时,它会在test.db中用新值更新所有旧值,并将其解锁到其他教员 我真正需要的是,当管理员阻止复选框时,它应该始终阻止所有其他教员,当教员也选择一些其他复选框并提交时,该特定复选框也应该阻止所有

我想在选中复选框时阻止它。我有管理员教员页面,当管理员阻止特定复选框时,它应该阻止所有教员的特定复选框。这些复选框在网格中。每个学院都有单独的登录,但所有学院都有相同的网格。当一个学院屏蔽特定复选框时,它也应屏蔽其他学院

当我运行教员页面时,它会阻止管理员已阻止的特定复选框,然后当我再次从教员页面提交时,它会在
test.db
中用新值更新所有旧值,并将其解锁到其他教员

我真正需要的是,当管理员阻止复选框时,它应该始终阻止所有其他教员,当教员也选择一些其他复选框并提交时,该特定复选框也应该阻止所有其他教员

这是我用于更新的代码。但它不起作用

 admin:

 protected void Button2_Click(object sender, EventArgs e)
    {
        using (SqlConnection con2 = new SqlConnection(@"Data Source=(LocalDB)\v11.0;AttachDbFilename=c:\users\work station\documents\visual studio 2012\Projects\NewTimeTable\NewTimeTable\App_Data\Admindetail.mdf;Integrated Security=True"))
          {
            string datedif = r.Cells[0].Text;
                    string dayweek = ddlclass.SelectedValue + ' ' + ddlmonth.SelectedValue + ' ' + ddlcourse.SelectedValue + ' ' + ddlsemester.SelectedValue + ' ' + ddlweek.SelectedValue;
                    con2.Open();
                    SqlCommand comm = new SqlCommand("insert into test (datedif,hour1,hour2,hour3,hour4,hour5,dayweek) values (@datedif,@hour1,@hour2,@hour3,@hour4,@hour5,@dayweek) ", con2);
                    comm.Parameters.AddWithValue("@datedif", datedif);
                    comm.Parameters.AddWithValue("@hour1", hour1);
                    comm.Parameters.AddWithValue("@hour2", hour2);
                    comm.Parameters.AddWithValue("@hour3", hour3);
                    comm.Parameters.AddWithValue("@hour4", hour4);
                    comm.Parameters.AddWithValue("@hour5", hour5);
                    comm.Parameters.AddWithValue("@dayweek", dayweek);
                    comm.ExecuteNonQuery();
                    con2.Close();
                }
            }
教员:

protected void btnsubmit_Click(object sender, EventArgs e)
    {
        using (SqlConnection con1 = new SqlConnection(ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString))
            {
                        string datedif = r.Cells[0].Text;
                        string subject1 = ddlsubjects.SelectedValue;
                        string subject2 = ddlsubjects.SelectedValue;
                        string subject3 = ddlsubjects.SelectedValue;
                        string subject4 = ddlsubjects.SelectedValue;
                        string subject5 = ddlsubjects.SelectedValue;
                        con2.Open();
                        SqlCommand comm = new SqlCommand("UPDATE test SET hour1 = @hour1,subject1 = @subject1,hour2 = @hour2,subject2 = @subject2,hour3 = @hour3,subject3 = @subject3,hour4 = @hour4,subject4 = @subject4,hour5 = @hour5,subject5 = @subject5 where datedif =@datedif and dayweek='"+ddlweek.SelectedValue+"'", con2);
                        comm.Parameters.AddWithValue("@hour1", hour1);
                        comm.Parameters.AddWithValue("@datedif", datedif);
                        comm.Parameters.AddWithValue("@subject1", subject1);
                        comm.Parameters.AddWithValue("@hour2", hour2);
                        comm.Parameters.AddWithValue("@subject2", subject2);
                        comm.Parameters.AddWithValue("@hour3", hour3);
                        comm.Parameters.AddWithValue("@subject3", subject3);
                        comm.Parameters.AddWithValue("@hour4", hour4);
                        comm.Parameters.AddWithValue("@subject4", subject4);
                        comm.Parameters.AddWithValue("@hour5", hour5);
                        comm.Parameters.AddWithValue("@subject5", subject5);
                        comm.ExecuteNonQuery();
                        con2.Close();
                    }
                }

我想在那个更新查询中使用If语句。建议我怎么做

您可以在以下情况下使用CASE表达式:

UPDATE test
SET
    Hour = CASE WHEN LEN(@Hour) > 0 THEN @Hour ELSE @Hour1 END,
    Password = CASE WHEN LEN(@Password) > 0 THEN @Password ELSE Password END
    ....
WHERE
    ....
编辑

CASE WHEN 'True' THEN @TrueCondition ELSE @FalseCondition END

我正在使用bool类型的复选框(即True或False)。如何在此条件下使用CASE表达式?@Stanislovas当我提交教员页面时,它会用新值更新旧值,但我希望旧值以及表中的更新值。只有选定值应在数据库中更新。建议我一些其他想法。让我们一起来。