在学校项目上,我发现了一个有趣的代码,可以为c#here创建一个输入框。我用它在数据库中发出查找请求。但我遇到了问题。当我用取消或关闭按钮关闭消息框时,它执行catch,而catch用于连接问题。我怎么避免这个?
编辑:在一些帮助下,我确定了异常的原因。 输入仍为空并导致异常。我如何检查消息框是否已关闭,以便在这种情况下我给出一个值?
以下是“查找”选项的代码:
private void TEACHER_BTN_find_Click(object sender, EventArgs e)
{
string input = "";
ShowInputDialog(ref input);
try
{
cnx.Open();
string req1 = "select nom_prof, pre_prof, ville_prof from Professeur where mat_prof ="+input;
cmd.CommandText = req1;
OleDbDataReader selection = cmd.ExecuteReader();
if (selection.Read())
{
TEACHER_TXB_reg.Text = input;
TEACHER_TXB_name.Text = selection[0].ToString();
TEACHER_TXB_lastn.Text = selection[1].ToString();
TEACHER_TXB_city.Text = selection[2].ToString();
}
else
MessageBox.Show("Matricule introuvable.");
cnx.Close();
}
catch
{
MessageBox.Show("Erreur de connexion.");
}
}
答案 0 :(得分:1)
您可以拥有多个catch
子句来捕获特定或一般异常。要抓住一般例外,您可以
catch (Exception ex)
{
//handle general exception here.
MessageBox.Show(ex.Message);
}
要捕获特定异常,在您的情况下,数据库异常,您可以
catch (DbException exDb)
{
//handle your db exception here. It will help you debug as well. You can
//log them somewhere for future reference.
}
希望有所帮助:)