ASPX SQL参数

时间:2018-09-17 20:19:28

标签: c# asp.net sql-server sqlparameters

我正在尝试根据用户的输入和缺乏输入来创建过滤列表。

如果用户输入了全名或仅输入名称的第一个字符,我就可以进行过滤,我有3个不同的文本框(名称,姓氏,国家/地区)用于过滤器。在SQL Server中,我创建了执行此操作并进行过滤的代码,即使它们没有在一个或所有文本框中输入值也是如此。因此,我认为SQL存储过程很好。

我相信我的问题是,当我试图通过文本框从Visual Studio中的用户那里获取此信息,并使用SQL参数将信息发送到存储过程时。我注意到我无法在SQL Paramete中获取空字符串。无论如何,我有将空字符串传递给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”中输入,则汤姆和琼斯都将提出他们的3列,但是如果他们在“姓氏”文本框中也用“收件人”输入,则只有汤姆和他的出现3列。 我确实可以在SQL Server上工作,但不能在Visual Studio ASPX中工作。

1 个答案:

答案 0 :(得分:0)

好的,我找到了答案,它在GridView中!

我正在显示数据,当您配置gridview时,有一个Default Value列,只需输入%

现在,即使有一个或两个空白的文本框,我也可以检索值。

谢谢大家的指导,它有助于解决此问题。