2016-05-19 17 views
0

私の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 checkedがtrueのときに私のcheckedbox == falseのメッセージがfunctions.myをNowsの唯一の問題はcheckedプロパティがfalseであるかどうかを確認するために例外

+2

あなたは 'ExecuteNonQuery()'をあなたのキャッチブロック_を呼び出しますか? 'try'ブロックにあるべきではありませんか?私は空のテキストボックスの例外を発生させるtryブロック内の何も見ることができません。唯一の "危険な"ものはExecuteNonQueryですので、tryブロックに入れてください。 –

+2

論理的な欠陥があるようです。「CheckBox1.Checked == false」は 'CheckBox1.Checked == true'状態にありますか? – ydoow

+0

私のキャッチブロックの中身は? 'con.close' –

答えて

0

まず、catchステートメントでクエリを実行しません。また、どのようなエラーが発生したのかを確認したい場合は、以下のようなものを使用する必要があります。

try 
{ 
    // sql code 
} 
catch(Exception e) 
{ 
    Console.WriteLine(e.Message); 
} 
finally 
{ 
    con.close(); 
} 

私はまた、あなたがusingステートメントを使用したくないと仮定すると、接続を閉じるfinallyブロックを追加しました。

また、SQL実行コードを別の関数またはデータベース操作を処理する完全に異なるクラスに配置することを検討することもできます。

1

あなたのチェックがためif文の範囲内にあります。

したがって、決して到達することはできません。それを動かす。

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に置き換えてください。

+0

この1つのalreay.myチェックボックス== falseメッセージは機能しません。 my ** textbox **が空の場合の例外の出力。 –

0

コードスニペットから私が観察したように、2つのことがあります。その

  1. catchはtryブロックからエラーが発生した場合にのみ実行されます。そうルネ・フォークト@として、あなたのtryブロック内の

     cmd.ExecuteNonQuery(); 
    
         con.Close(); 
    

を入れて、「キャッチ(のSQLException SQEX)」とcatchブロックを作成し、正確なメッセージのために例外オブジェクトを使用する必要が示唆しています。 2.ブロックする場合は "CheckBox1.Checked == false"を削除し、ブロックの場合はメールのelse部分にそれを加えます。

テストしてください。

関連する問題