Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/22.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#从checkboxlist中筛选sql查询的问题_C#_.net_Visual Studio 2012 - Fatal编程技术网

c#从checkboxlist中筛选sql查询的问题

c#从checkboxlist中筛选sql查询的问题,c#,.net,visual-studio-2012,C#,.net,Visual Studio 2012,这是我的问题。我有一个文本框,其中可以实现关键字的研究。我有一个带有不同主题(ADV、Logistic、Finance、Administration)的复选框来过滤sql查询。如果我搜索关键字并选中“logistic”,则返回结果将仅与“logistic”相关。这很好,问题是,如果我选中2个复选框,例如“物流”和“财务”,我将只得到与“物流”相关的结果,但我希望得到2个结果。。我让它像20分钟前一样工作,突然不工作了,我不明白为什么。谁能告诉我我错过了什么 这是我的密码: string word

这是我的问题。我有一个文本框,其中可以实现关键字的研究。我有一个带有不同主题(ADV、Logistic、Finance、Administration)的复选框来过滤sql查询。如果我搜索关键字并选中“logistic”,则返回结果将仅与“logistic”相关。这很好,问题是,如果我选中2个复选框,例如“物流”和“财务”,我将只得到与“物流”相关的结果,但我希望得到2个结果。。我让它像20分钟前一样工作,突然不工作了,我不明白为什么。谁能告诉我我错过了什么

这是我的密码:

string word = tbSearch.Text;

string strSql = @"SELECT CAST(ID as VarChar(50)) ID, Aggregation, DateDerniereSolution, DateDescription, DerniereSolution, DescriptionDemande, FileDeTraitement, NomContact, Numero, SousRubrique, TitreDemande
               FROM cfao_DigiHelp_index.DigiHelpData WHERE ( 1 = 1 )";

string selectedValue = "";
bool IsFirst = false;
strSql += @" AND (";

foreach (ListItem item in CheckboxID.Items)
{
    if (item.Selected)
    {
        selectedValue +=  item.Value ;

        if (IsFirst)
        {
            strSql += " OR ";
        }

        strSql += " SousRubrique Like '%" + selectedValue + "%' ";
        IsFirst = true; 
    }

    if (CheckboxID.SelectedIndex == -1)
    {
        Label2.Visible = true;
        Label2.Text = "Veuillez cocher au moins une rubrique";
    }
}

strSql += @"  )";
这条线

 selectedValue +=  item.Value ;
破坏您的查询,因为在每次循环中,您都会将选中项的值连接到selectedValue。只需使用item.Value

strSql += " SousRubrique Like '%" + item.Value + "%' ";
此外,如果选中的项目与SousRubrique内容完全匹配,则可以避免使用LIKE和wild搜索模式“%”,而只使用equal运算符


请记住,您需要严格控制checkedlistbox项的内容,因为如果您的用户能够为SousRubrique写入值,那么您的代码就会受到Sql注入攻击。

您可以发布查询吗?您所说的
不再起作用了
您是否遇到任何错误或无法获得预期的结果输出?非常感谢!