You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

try-catch异常失效问题:输入不存在词汇无报错提示求解决方案

问题解决建议:搜索无匹配时无反馈、Catch块未触发提示

核心问题分析

  1. 无匹配结果无反馈:当输入数据库不存在的词汇时,查询返回空结果,reader.Read()返回false,循环不执行,但程序不会抛出异常,所以既不会进入catch块,也没有任何用户提示。
  2. Catch块未触发:Catch块仅在代码抛出运行时异常(如数据库连接失败、SQL语法错误等)时才会执行,无匹配结果不属于异常范畴,因此原代码的catch提示永远不会因“无结果”触发;同时原代码中Con.Close()放在try块内,若执行中抛出异常,连接可能无法正常关闭。

解决方案步骤

1. 添加无匹配结果的用户提示

在读取数据后,通过reader.HasRows判断是否有查询结果,无结果时主动弹出提示。

2. 修复资源管理问题

使用using语句自动管理数据库连接、命令、阅读器资源,确保异常时资源也能正常释放,避免连接泄漏。

3. 修复SQL注入漏洞

原代码直接拼接用户输入到SQL语句,存在严重安全风险,改用参数化查询替代字符串拼接。

修改后的完整代码

try
{
    // using语句自动管理连接资源,异常时也会自动关闭
    using (SqlConnection Con = new SqlConnection(你的数据库连接字符串))
    {
        Con.Open();
        // 参数化查询,避免SQL注入
        string query = "Select * from Medicine_tbl where MedName = @MedName";
        using (SqlCommand comn = new SqlCommand(query, Con))
        {
            // 添加查询参数
            comn.Parameters.AddWithValue("@MedName", SearchTb.Text);
            using (SqlDataReader reader = comn.ExecuteReader())
            {
                if (reader.HasRows)
                {
                    while (reader.Read())
                    {
                        Mednametb.Text = reader.GetValue(0).ToString();
                        Bptb.Text = reader.GetValue(1).ToString();
                        sptb.Text = reader.GetValue(2).ToString();
                        qtytb.Text = reader.GetValue(3).ToString();
                        companycb1.Text = reader.GetValue(4).ToString();
                    }
                }
                else
                {
                    // 无匹配结果时给用户提示
                    MessageBox.Show("未找到匹配的药品信息");
                }
            }
        }
        // using会自动关闭连接,无需手动调用Con.Close()
    }
}
catch (Exception ex)
{
    MessageBox.Show("搜索出错: " + ex.Message);
}

关键修改说明

  • 无匹配反馈:通过reader.HasRows判断查询结果,无结果时弹出提示框,解决输入不存在词汇无反应的问题。
  • 资源安全:using语句自动释放数据库相关资源,避免异常场景下的连接泄漏问题。
  • 安全防护:参数化查询彻底避免SQL注入风险,提升代码安全性。
  • 异常逻辑清晰:Catch块仅处理真正的运行异常(如连接失败、SQL错误等),此时弹出错误提示,符合异常处理的设计逻辑。

内容的提问来源于stack exchange,提问作者nik-trifonov

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.01 18:00:04