C# SQL 2008 Server R2中的交换机案例
我一直在尝试在网页/表单上创建搜索功能。它有点复杂,因为它有多个搜索框 它必须搜索sql数据库并返回正确的行 我一直在寻找一个开关,当值为null或非null时,它等效于执行某个查询。通常,如果用户没有输入学生ID(主键),则会转到不包含ID参数的查询。不确定这是不是正确的逻辑。我在sql方面的知识非常有限,如果这是一个基本问题,很抱歉,但我没有在google上找到解决方案,因为显然没有人需要这样做。当然,我在寻找一个存储过程 下面是我对SQL的看法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
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()
-这可能会导致意外和令人惊讶的结果…这听起来很有希望,我可以将这些结果链接起来吗?如果那样行的话,我可以很容易地完成。