如何处理OdbcException

范托

我有这个问题,我试图解决,但没有成功。我有一项输入研究,可以在其中进行关键字研究。我有一个代表不同主题(物流,管理,财务...)的checkBoxList来过滤查询。如果我的关键字是“问题”,并且选中“管理”复选框,则结果将仅是与管理相关的“问题”。它工作正常,但如果我不选中任何复选框,则会将我引导到OdbcException。我试图用try catch处理它,但是它被完全忽略了,它没有执行,仍然出现错误。

这是我用于清单列表研究的代码:

<asp:CheckBoxList ID="CheckboxID" runat="server" OnSelectedIndexChanged="CheckboxID_SelectedIndexChanged" AutoPostBack="true">
        <asp:ListItem Value="ADV"> ADV </asp:ListItem>
        <asp:ListItem Value="Logistique"> Logistique </asp:ListItem>
        <asp:ListItem Value="Finance"> Finance </asp:ListItem>
        <asp:ListItem Value="EDI"> EDI </asp:ListItem>
        <asp:ListItem Value="Administration"> Administration </asp:ListItem>
    </asp:CheckBoxList>

    <label for="tbSearch">Recherche : </label>
     <asp:TextBox ID="tbSearch" runat="server"></asp:TextBox>`


protected void Populate()
{
    Occurence = 0;

    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; 
        }
    }

    strSql += @"  )";

编辑:得到另一个pb,如果我不选中任何复选框而我输入一个词,则导致我遇到相同的错误,尝试一切使它正常工作,我会发疯

有任何想法吗 ?

托马斯·阿尤布(Thomas Ayoub)

如果您未选中任何复选框,则情况将AND ()导致异常。用这个:

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

if (CheckboxID.Items.Cast<ListItem>().Any(x => x.Selected))
{
    List<string> conditionList = CheckboxID.Items.Cast<ListItem>().Where(x => x.Selected).Select(item => " SousRubrique Like '%" + item.Value + "%' ").ToList();
    strSql += " WHERE (" + string.Join(" OR ", conditionList) + "  )";
}

仅当至少选中一个复选框时,它才会连接字符串。

您需要using System.Linq;在文件之上添加

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章