Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/325.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# ASP.Net执行SQL(子)查询_C#_Asp.net - Fatal编程技术网

C# ASP.Net执行SQL(子)查询

C# ASP.Net执行SQL(子)查询,c#,asp.net,C#,Asp.net,我目前正试图通过一个使用ASP.net和MYSQL创建的网站创建一个“搜索引擎”,我对这两个网站都是新手,我有这个问题。我已经为用户的输入创建了一个页面,以便他们可以通过键入一个或所有不同的搜索字段进行搜索。(Make、model、color等)根据用户提供的信息,创建SQL子查询以根据键入的字段进行搜索的最佳方法是什么。我环顾四周,看到了很多解决方案,只需编写一个参数为NULL的联合调用,但我宁愿不执行8!获取所有可能性所需的sql查询。如果有人提出建议,我们将不胜感激。在没有看到模式的情况下

我目前正试图通过一个使用ASP.net和MYSQL创建的网站创建一个“搜索引擎”,我对这两个网站都是新手,我有这个问题。我已经为用户的输入创建了一个页面,以便他们可以通过键入一个或所有不同的搜索字段进行搜索。(Make、model、color等)根据用户提供的信息,创建SQL子查询以根据键入的字段进行搜索的最佳方法是什么。我环顾四周,看到了很多解决方案,只需编写一个参数为NULL的联合调用,但我宁愿不执行8!获取所有可能性所需的sql查询。如果有人提出建议,我们将不胜感激。

在没有看到模式的情况下,我们无法确定,但我不相信您需要子查询。搜索可以通过下拉列表强制用户选择品牌、型号等。在这种情况下,您需要的是基于所选标准的一系列AND语句:

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" )
...