2016-07-20 16 views
0

実行時SQLクエリを使用してデータベースにデータを挿入していますが、その前にレコードが存在するかどうかを確認しています。以下は、レコードが特定の電子メールに関連付けられていませんが、レコードがない場合には(他の部分にとは、ExecuteNonQuery後に行くがあった場合、私のコードデータをデータベースに保存できません

protected void btnSignUp_Click(object sender, EventArgs e) 
{ 
    if (Page.IsValid) 
    { 
     try 
     { 
      using (SqlConnection con = new SqlConnection(cs)) 
      { 
       string strgender = ""; 
       if (Rb_Male.Checked) 
        strgender = "Male"; 
       else if (Rb_Female.Checked) 
        strgender = "Female"; 
       else 
       { 

        lblMsg.Text = "Please Select Gender"; 
        lblMsg.ForeColor = Color.Red; 
       } 

       con.Open(); 
       SqlCommand cmdcheck = new SqlCommand(); 
       cmdcheck.CommandText = "select * from [Users] where E_Mail='" + @tb_Email.Text + "'"; 
       cmdcheck.Connection = con; 
       //cmd.Parameters.AddWithValue("@em", tb_Email.Text); 
       SqlDataReader drd = cmdcheck.ExecuteReader(); 
       if (drd.Read()) 
       { 
        lblEmail.Visible = true; 
        lblEmail.Text = "Email Already Exsits"; 
        lblMsg.ForeColor = Color.Red; 
        lblMsg.Text = "Account not created!!!"; 

       } 
       else 
       { 
        string strcmd = "insert into Users values ('" + @tbName.Text + "','" + @tbSName.Text + "','" + @tb_Email.Text + "','" + @tb_Pass.Text + "','" + @DropDownDay.Text + "','" + @DropDownMonth.Text + "','" + @DropDownYear.Text + "','"+ strgender +"')"; 
        SqlCommand cmd = new SqlCommand(strcmd, con); 
        cmd.ExecuteNonQuery(); 
        lblMsg.Text = "Account created sussecfully"; 
        lblMsg.ForeColor = Color.Green; 
        clearallfields(); 
       } 


      } 
     } 
     catch 
     { 

      lblMsg.ForeColor = Color.Red; 
      lblMsg.Text = "Account not created!!!"; 


     } 


    } 
    else 
    { 
     lblMsg.ForeColor = Color.Red; 
     lblMsg.Text = " * Enter Required Field(s)"; 
    } 
} 

蛇腹部が)場合にはうまく機能しているです。それがこれで私を助け

if (drd.Read()) 
      { 
       lblEmail.Visible = true; 
       lblEmail.Text = "Email Already Exsits"; 
       lblMsg.ForeColor = Color.Red; 
       lblMsg.Text = "Account not created!!!"; 

      } 
      else 
      { 
       string strcmd = "insert into Users values ('" + @tbName.Text + "','" + @tbSName.Text + "','" + @tb_Email.Text + "','" + @tb_Pass.Text + "','" + @DropDownDay.Text + "','" + @DropDownMonth.Text + "','" + @DropDownYear.Text + "','"+ strgender +"')"; 
       SqlCommand cmd = new SqlCommand(strcmd, con); 
       cmd.ExecuteNonQuery(); 
       lblMsg.Text = "Account created sussecfully"; 
       lblMsg.ForeColor = Color.Green; 
       clearallfields(); 
      } 


     } 
    } 
    catch 
    { 

     lblMsg.ForeColor = Color.Red; 
     lblMsg.Text = "Account not created!!!"; 


    } 

親切キャッチ部分に行く..

+0

例外の詳細は何ですか? –

+0

を参照するには 'Catch(Exception ex)'を使用してください。エラーは「このコマンドに関連付けられている開いているDataReaderが既にあり、最初に閉じる必要があります。 – faisal

答えて

-1

あなたが次の行にUsers table.Placeにブレークポイントを追加する列を指定していないあなたの挿入ステートメント:

string strcmd = "insert into Users values ('" + @tbName.Text + "','" + @tbSName.Text + "','" + @tb_Email.Text + "','" + @tb_Pass.Text + "','" + @DropDownDay.Text + "','" + @DropDownMonth.Text + "','" + @DropDownYear.Text + "','"+ strgender +"')"; 

は、あなたのASP.NET Webアプリケーションでそれをコピーし、それが最も可能性が高いそれはSQLで動作unti INSERT文をfails.Fixていることがわかりますstrcmdの値を取り、SQL Serverの管理Studio.Youでそれを実行します。

また、あなたのcatchブロックを変更し、あなたが取得している例外を検査:

catch(Exception ex) 
{ 
    System.Diagnostics.Debugger.Break(); 
} 
+0

なぜ-1なのですか?問題の内容を識別するためにOPオプションを有効にしています... –

関連する問題