在SQL 2008 Server R2中切换案例
我一直在试图在网页/表单上创建搜索功能。这有点复杂,因为它有多个搜索框。在SQL 2008 Server R2中切换案例
它必须搜索sql数据库并返回正确的行。
我一直在寻找一个相当于执行特定查询的开关,如果一个值为null或不是。通常如果用户没有输入学生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
值设置为空(DBNull.Value
),以便将null
值传递给sql查询。所以当向这个查询传递一个空值时,这个条件将被忽略。
这听起来很有希望,我可以链接那些AND?如果可以的话,我可以很容易地完成它。 –
@RudraMatroja - 是的,你可以。看到我更新的查询。 –
您是否也可以显示'Student_CRUD' proc定义? –
[T-SQL中的动态搜索条件](http://www.sommarskog.se/dyn-search.html)可能是您需要查找的内容(开始时可能有点罗嗦,但希望您可以查看这些例子,看看他们通常如何工作) –
你应该看看[我们可以停止使用AddWithValue()了吗?](http://blogs.msmvps.com/jcoehoorn/blog/2014/05/12/can-we-停止使用addwithvalue已经/),并停止使用'.AddWithValue()' - 它可以导致意想不到的和令人惊讶的结果... –