我正在尝试根据用户的输入和缺少的输入创建一个过滤列表。
在SQL Server中,我创建了执行此操作的代码,并在没有向一个或所有文本框中输入值的情况下进行筛选。所以我相信SQL存储过程是很好的。
我注意到我不能将空字符串放入SQL参数中。有没有办法让我向SQL参数传递一个空字符串?
下面是几段代码。
存储过程中的相关位:
@Namenvarchar(100) = ' ',
@Surname nvarchar(100) = ' ',
@Country nvarchar(100) = ' '
AND IsNull(Input.Name, '') LIKE '%' + @Name+ '%'
AND IsNull(Input.Surname, '') LIKE '%' + @Surname + '%'
AND IsNull(Input.Country, '') LIKE '%' + @Country + '%'
下面是与Visual Studio端相关的代码:
SqlCommand cmd = new SqlCommand("FilterBasedOnInput", con);
cmd.CommandType = CommandType.StoredProcedure;
SqlParameter Name = new SqlParameter("@Name", TBName.Text);
SqlParameter Surname= new SqlParameter("@Surname", TBSurname.Text);
SqlParameter Country= new SqlParameter("@Country", TBCountry.Text);
cmd.Parameters.Add(Name);
cmd.Parameters.Add(Surname);
cmd.Parameters.Add(Country);
con.Open();
所以让我们假设在数据库中我有...
Names ("Tom", "Jones", "Nick")
Surname ("To", "Jo", "Ni")
Country ("England", "USA", "France")
如果用户在姓名文本框"O“中输入,那么Tom和Jones都会得到他们的3列,但如果他们也在姓氏文本框中输入"To”,那么只有Tom会出现他的3列。我确实在SQL Server上工作,但在Visual Studio ASPX中不起作用。
发布于 2018-09-17 21:47:07
好了,伙计们,我找到了答案,它就在GridView里!
现在,即使只有一两个空的文本框,我也能够检索值。
感谢大家的指导,它有助于解决这个问题。
https://stackoverflow.com/questions/52375126
复制