C# ASP.Net执行SQL(子)查询
我目前正试图通过一个使用ASP.net和MYSQL创建的网站创建一个“搜索引擎”,我对这两个网站都是新手,我有这个问题。我已经为用户的输入创建了一个页面,以便他们可以通过键入一个或所有不同的搜索字段进行搜索。(Make、model、color等)根据用户提供的信息,创建SQL子查询以根据键入的字段进行搜索的最佳方法是什么。我环顾四周,看到了很多解决方案,只需编写一个参数为NULL的联合调用,但我宁愿不执行8!获取所有可能性所需的sql查询。如果有人提出建议,我们将不胜感激。在没有看到模式的情况下,我们无法确定,但我不相信您需要子查询。搜索可以通过下拉列表强制用户选择品牌、型号等。在这种情况下,您需要的是基于所选标准的一系列AND语句:C# ASP.Net执行SQL(子)查询,c#,asp.net,C#,Asp.net,我目前正试图通过一个使用ASP.net和MYSQL创建的网站创建一个“搜索引擎”,我对这两个网站都是新手,我有这个问题。我已经为用户的输入创建了一个页面,以便他们可以通过键入一个或所有不同的搜索字段进行搜索。(Make、model、color等)根据用户提供的信息,创建SQL子查询以根据键入的字段进行搜索的最佳方法是什么。我环顾四周,看到了很多解决方案,只需编写一个参数为NULL的联合调用,但我宁愿不执行8!获取所有可能性所需的sql查询。如果有人提出建议,我们将不胜感激。在没有看到模式的情况下
Select ...
From MyTable
Where Make = @Make
And Model = @Model
...
您可以根据用户要求的参数(不包括未指定的参数)在C#代码中构建此SQL语句。也就是说,如果用户没有选择一个模型,您就不会包含该模型和声明
您的SQL汇编代码可能如下所示
private function Search( string make, string model, ... )
{
var sql = new StringBuilder();
sql.AppendLine( "Select .... " );
sql.AppendLine( "From MyTable" );
sql.AppendLine( "Where 1=1" ); //this is just to add the Where keyword
var parameters = List<DbParameter>();
if ( !string.IsNullOrEmpty( make ) )
{
sql.AppendLine( " And Make = @Make " );
parameters.AddWithValue( "@Make", make );
}
if ( !string.IsNullOrEmpty( model ) )
{
sql.AppendLine( " And Model = @Model " );
parameters.AddWithValue( "@Model", model );
}
...
}
var sql = new StringBuilder();
sql.AppendLine( "Select .... " );
sql.AppendLine( "From MyTable" );
sql.AppendLine( "Where ( @Make Is Null Or Make = @Make" )
sql.AppendLine( " And ( @Model Is Null Or Model = @Model" )
...