我的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);
}
}
}
每当复选框为真时,我都可以提交该文件。
但问题是,每当我将文本框留空时,我也会尝试获取异常。我尝试的第一种方法只有在它不发送的checkedbox == false
时才起作用。这次checkedbox == false
消息框与捕获消息一起无法使用我的新课程。
EDIT1 所以我的checkedbox == false消息nows functions.my只有问题是异常
答案 0 :(得分:1)
检查以查看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
。
答案 1 :(得分:0)
首先,我不会在catch
语句中执行查询。此外,如果你想看看发生了什么错误,你需要使用类似下面的内容。
try
{
// sql code
}
catch(Exception e)
{
Console.WriteLine(e.Message);
}
finally
{
con.close();
}
我还添加了finally
块来关闭连接,假设您不想使用using
语句。
您可能还想考虑将sql执行代码放在不同的函数或处理数据库操作的完全不同的类中。
答案 2 :(得分:0)
我从你的代码片段中看到了两件事。那个
只有当代码块从try块中抛出错误时才会执行catch。所以@RenéVogt建议你必须把
cmd.ExecuteNonQuery();
con.Close();
在try块中,并将catch块设置为“catch(SqlException sqex)”并使用异常对象来获取确切的消息。 2.然后删除“CheckBox1.Checked == false”if block并将其作为邮件的else部分用于阻止。
并测试它。