[英]Exception Message not showing
我的checked==false
消息和异常不起作用。
这是代码:
private void Submit()
{
if (CheckBox1.Checked == true)
{
try
{
con.Open();
cmd = new SqlCommand(@"INSERT INTO orders3
(order_custname,order_productname
,order_address,order_tel#,order_cel#
,order_cp,order_delivery,order_terms
,order_file,order_qty,order_unit
,order_jobdesc,order_verified1)
VALUES
(@custname,@productname
,@address,@tel#,@cel#
,@cp,@delivery,@terms
,@file,@qty,@unit
,@jdesc,@verified1)
", con);
cmd.Parameters.AddWithValue("@custname", lblCustname.Text);
cmd.Parameters.AddWithValue("@productname", DropDownList1.SelectedItem.Value.ToString());
cmd.Parameters.AddWithValue("@address", txtAddress.Text);
cmd.Parameters.AddWithValue("@tel#", txtTel.Text);
cmd.Parameters.AddWithValue("@cel#", txtCel.Text);
cmd.Parameters.AddWithValue("@cp", txtcp.Text);
cmd.Parameters.AddWithValue("@delivery", txtDelAr.Text);
cmd.Parameters.AddWithValue("@terms", txtTerms.Text);
cmd.Parameters.AddWithValue("@file", lblFile.Text);
cmd.Parameters.AddWithValue("@qty", txtQty.Text);
cmd.Parameters.AddWithValue("@unit", txtUnit.Text);
cmd.Parameters.AddWithValue("@jdesc", txtJobDesc.Text);
cmd.Parameters.AddWithValue("@verified1", "yes");
string script1 = "alert(\"Your order has been submitted.\");";
ScriptManager.RegisterStartupScript(this, GetType(),
"ServerControlScript", script1, true);
}
catch
{
cmd.ExecuteNonQuery();
con.Close();
string script = "alert(\"Please recheck your form.\");";
ScriptManager.RegisterStartupScript(this, GetType(),
"ServerControlScript", script, true);
}
if (CheckBox1.Checked == false)
{
string script2 = "alert(\"Please Agree to our terms.\");";
ScriptManager.RegisterStartupScript(this, GetType(),
"ServerControlScript", script2, true);
}
}
}
每当复选框为true时,我都可以提交文件。 但是问题是,每当我将文本框留空时,我也试图获取异常。 每当checkedbox == false
不会发送时,我尝试的函数的第一种方法就起作用。 这次使用我的新班级,当checkedbox == false
messagebox不能与catch消息一起使用。
edit1,所以我的checkboxbox == false消息现在起作用了。我唯一的问题是异常
你的检查,看是否checked
属性为false
是的范围之内if
语句时checked
是真的。
因此,它永远无法达到。 移开。
private void Submit()
{
if (CheckBox1.Checked == true)
{
try
{
//some stuff
}
catch
{
//Some other stuff
}
}
if (CheckBox1.Checked == false)
{
string script2 = "alert(\"Please Agree to our terms.\");";
ScriptManager.RegisterStartupScript(this, GetType(),
"ServerControlScript", script2, true);
}
}
或者更好的是,用else
代替它。
首先,我不会在catch
语句中执行查询。 另外,如果您想查看发生了什么错误,则需要使用以下类似内容。
try
{
// sql code
}
catch(Exception e)
{
Console.WriteLine(e.Message);
}
finally
{
con.close();
}
假设您不想使用using
语句,我还添加了一个finally
块来关闭连接。
您可能还需要考虑将sql执行代码放在不同的函数或处理数据库操作的完全不同的类中。
从您的代码片段中可以看出,有两件事。 那
仅在代码块从try块内部抛出错误时才执行catch。 因此,如@RenéVogt所建议,您必须将
cmd.ExecuteNonQuery(); con.Close();
在您的try块中,将catch块设置为“ catch(SqlException sqex)”,然后将异常对象用于确切的消息。 2.然后,如果阻止,则删除“ CheckBox1.Checked == false”,如果阻止,则将其放入邮件的其他部分。
并测试一下。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.