Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/73.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# SQL 2008 Server R2中的交换机案例_C#_Sql_Asp.net_Sql Server 2008 R2 - Fatal编程技术网

C# SQL 2008 Server R2中的交换机案例

C# SQL 2008 Server R2中的交换机案例,c#,sql,asp.net,sql-server-2008-r2,C#,Sql,Asp.net,Sql Server 2008 R2,我一直在尝试在网页/表单上创建搜索功能。它有点复杂,因为它有多个搜索框 它必须搜索sql数据库并返回正确的行 我一直在寻找一个开关,当值为null或非null时,它等效于执行某个查询。通常,如果用户没有输入学生ID(主键),则会转到不包含ID参数的查询。不确定这是不是正确的逻辑。我在sql方面的知识非常有限,如果这是一个基本问题,很抱歉,但我没有在google上找到解决方案,因为显然没有人需要这样做。当然,我在寻找一个存储过程 下面是我对SQL的看法 using (SqlCommand cmd

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

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

我一直在寻找一个开关,当值为null或非null时,它等效于执行某个查询。通常,如果用户没有输入学生ID(主键),则会转到不包含ID参数的查询。不确定这是不是正确的逻辑。我在sql方面的知识非常有限,如果这是一个基本问题,很抱歉,但我没有在google上找到解决方案,因为显然没有人需要这样做。当然,我在寻找一个存储过程

下面是我对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查询。因此,当向该查询传递空值时,该条件将被忽略。

您能否同时显示
Student\u CRUD
proc定义?可能是您需要找到的(开始时可能有点罗嗦,但希望您可以查看示例并了解它们通常是如何工作的)您应该检查并停止使用
.AddWithValue()
-这可能会导致意外和令人惊讶的结果…这听起来很有希望,我可以将这些结果链接起来吗?如果那样行的话,我可以很容易地完成。