繁体   English   中英

SQL 2008 Server R2 中的切换案例

[英]Switch case in SQL 2008 Server R2

我一直在尝试在网页/表单上创建搜索功能。 这有点复杂,因为它有多个搜索框。

它必须搜索 sql 数据库并返回正确的行。

如果值是否为空,我正在寻找一个等效于执行某个查询的开关。 通常,如果用户不输入学生 ID(主键),那么它将执行不包含 ID 参数的查询。 不知道这是否是正确的逻辑。 我在 sql 方面的知识非常有限 atm,对不起,如果这是一个基本问题,但我没有在谷歌上找到解决方案,因为显然没有人需要这样做。 我当然正在寻找一个存储过程

这就是我想要触发 SQL 的想法

using (SqlCommand cmd = new SqlCommand("Student_CRUD"))
{
    cmd.CommandType = CommandType.StoredProcedure;
    cmd.Parameters.AddWithValue("@Action", "SEARCH");
    cmd.Parameters.AddWithValue("@StudentID", StudentID);
    cmd.Parameters.AddWithValue("@FirstName", Name);
    cmd.Parameters.AddWithValue("@Class", Class);
    cmd.Parameters.AddWithValue("@RollNumber", RollNumber);
    cmd.Connection = con;

    con.Open();

    try
    {
        cmd.ExecuteNonQuery();
        con.Close();
    }
    catch (SqlException exp)
    {
        Response.Write(exp);
    }
}

您可以在存储过程中的查询中执行此操作:

WHERE FirstName = @FirstName 
  AND (@StudentID IS NULL OR (StudentID = @StudentID))
  AND (@Class NULL OR (Class = @Class))
  ....

但是,您必须在代码中将@studentID值设置为 null ( DBNull.Value ),以便将null值传递给 sql 查询。 因此,当向此查询传递空值时,条件将被忽略。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM