C#从CheckBoxList过滤SQL查询的问题



这是我的问题。我有一个文本框,可以用关键字实现研究。我有一个具有不同主题(ADV,Logistic,Finance,Administration)的清单框,可以过滤SQL查询。如果我搜索一个关键字,并且检查了" logistic",则返回结果仅与" logistic"有关。这很好,问题是,如果我检查2个复选框,例如" logistic"one_answers"财务",例如,我只会与" logistic"相关,但我想获得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 ;

造成查询的破坏,因为在每个循环下,您都会与选定的选项值相连。只需使用该项目。VALUE

strSql += " SousRubrique Like '%" + item.Value + "%' ";

另外,如果您的检查项目与Sousrubrique完全匹配,则可以避免使用类似和野生搜索模式"%",但仅使用均等操作员

请记住,您需要严格控制CheckEdlistBox项目的内容,因为如果您的用户能够为Soustrubrique编写值,您的代码会暴露于SQL注入攻击中。

最新更新