try-catch 异常问题,无法处理整个异常

问题描述 投票:0回答:1

这个异常工作了一半,搜索是可以的,但是从“catch”不会弹出一条消息-“搜索错误”,当我输入数据库中没有的错误单词时,什么也没有发生,有些建议?

try
    {
        Con.Open();
        string query = "Select * from Medicine_tbl where MedName ='" + SearchTb.Text + "'";
        SqlCommand comn = new SqlCommand(query, Con);
        SqlDataReader reader;
        reader = comn.ExecuteReader();
        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();
        }
        Con.Close();
    }
    catch (Exception ex)
    {
        MessageBox.Show("Error in searching." + ex);
    }   
}

我找过例子,词序是一样的。

c# windows forms exception try-catch
1个回答
1
投票

也许问题与以下事实有关:当数据库中找不到任何内容时,不会调用 MessageBox.Show。仅当结果中至少有一行时,您的 reader.Read() 循环才会执行。试试这个:


    try
    {
        Con.Open();
        string query = "Select * from Medicine_tbl where MedName ='" + SearchTb.Text + "'";
        SqlCommand comn = new SqlCommand(query, Con);
        SqlDataReader reader;
        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("No data found.");
        }
    
        Con.Close();
    }
    catch (Exception ex)
    {
        MessageBox.Show("Error in searching: " + ex.Message);
    }

reader.HasRows() 检查是否有返回的行。我对 catch 进行了修改,以使用 ex.Message 显示异常的详细消息。

希望这可以帮助你:)

© www.soinside.com 2019 - 2024. All rights reserved.