【发布时间】:2016-08-18 18:38:13
【问题描述】:
我在单击按钮时插入数据。我正在尝试处理该字段的异常。我的代码是:
try
{
con.Open();
SqlCommand cmd = new SqlCommand();
cmd.CommandText = "INSERT INTO omotnica (id,name,date,number)" +
"VALUES(@id,@naziv_predmeta,@date,@number)";
cmd.Parameters.Add("@id", SqlDbType.Int).Value = idInt;
cmd.Parameters.Add("@name", SqlDbType.NVarChar, 300).Value = this.textBoxName.Text;
try
{
DateTime datt = DateTime.Parse(textBoxDatumUpisa.Text);
textBoxDatumUpisa.Text = datt.ToString("d/M/yyyy");
cmd.Parameters.Add("@date", SqlDbType.DateTime).Value = datt;
}
catch (FormatException)
{
MessageBox.Show("Date must be dd/MM/yyyy");
}
try
{
cmd.Parameters.Add("@number", SqlDbType.Int).Value = Convert.ToInt32(textBoxNumber.Text);
}
catch (SqlException e) when (e.Number == 8178)
{
MessageBox.Show("U must enter something");
}
catch (FormatException)
{
MessageBox.Show("It must be an integer");
}
con.Close();
MessageBox.Show("Saved!");
}
catch (Exception ex)
{
MessageBox.Show(" error" + ex.Message + ex.Source );
}try
{
con.Open();
SqlCommand cmd = new SqlCommand();
cmd.CommandText = "INSERT INTO omotnica (id,name,date,number)" +
"VALUES(@id,@naziv_predmeta,@date,@number)";
cmd.Parameters.Add("@id", SqlDbType.Int).Value = idInt;
cmd.Parameters.Add("@name", SqlDbType.NVarChar, 300).Value = this.textBoxName.Text;
try
{
DateTime datt = DateTime.Parse(textBoxDatumUpisa.Text);
textBoxDatumUpisa.Text = datt.ToString("d/M/yyyy");
cmd.Parameters.Add("@date", SqlDbType.DateTime).Value = datt;
}
catch (FormatException)
{
MessageBox.Show("Date must be dd/MM/yyyy");
}
try
{
cmd.Parameters.Add("@number", SqlDbType.Int).Value = Convert.ToInt32(textBoxNumber.Text);
}
catch (SqlException e) when (e.Number == 8178)
{
MessageBox.Show("U must enter something");
}
catch (FormatException)
{
MessageBox.Show("It must be an integer");
}
con.Close();
MessageBox.Show("Saved!");
}
catch (Exception ex)
{
MessageBox.Show(" error" + ex.Message + ex.Source );
}
当我在 textBoxNumber 中输入一些字符串时,它会触发一个 FormatException 以及一个异常,他的参数化查询需要未提供的参数。当我将 textBox 留空时,它会触发参数化查询需要未提供的参数. 如何改变它?我不是用 SQLException catch 覆盖了那个异常吗? 我需要它在消息框为空或文本框内不是整数时触发消息框。
【问题讨论】:
标签: c# exception-handling