这是我的问题。我有一个文本框,可以用关键字实现研究。我有一个具有不同主题(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注入攻击中。