2017-08-27 4 views
0

私は、SQL Serverのストアドプロシージャをクリックして新しい行を挿入するボタンを登録しています。問題は、同じ項目の2つの行が挿入された(偶発的なダブルクリックがない)場合です。私は完全に私のコードを通過したが、私は問題を見つけることができませんでした。C#ASP.NET、SQL Server:Button Click重複行を挿入します。

C#]ボタンをクリックコード:

protected void Button1_Click(object sender, EventArgs e) 
{ 
    int userId = 0; 
    string constr = ConfigurationManager.ConnectionStrings["islamguiderConnectionString"].ConnectionString; 

    using (SqlConnection con = new SqlConnection(constr)) 
    { 
     using (SqlCommand insertUser = new SqlCommand("Register_Student")) 
     { 
      insertUser.CommandType = CommandType.StoredProcedure; 

      insertUser.Parameters.AddWithValue("@StudentName", TextBox1.Text.ToUpper()); 
      insertUser.Parameters.AddWithValue("@Email", TextBox4.Text.ToLower()); 
      insertUser.Parameters.AddWithValue("@CourseCode", DropDownList2.SelectedValue); 
      insertUser.Parameters.AddWithValue("@CourseTitle", DropDownList2.SelectedItem.ToString()); 

      insertUser.Connection = con; 

      con.Open(); 
      insertUser.ExecuteNonQuery(); 

      userId = Convert.ToInt32(insertUser.ExecuteScalar()); 
      Con.Close() 
     } 
    } 
} 

マイSQL Serverのストアドプロシージャ:

CREATE PROCEDURE [dbo].[Register_Student] 
    @StudentName NVARCHAR(200), 
    @Email NVARCHAR(200), 
    @CourseCode NVARCHAR(200), 
    @CourseTitle NVARCHAR(200) 
AS 
BEGIN 
    SET NOCOUNT ON; 
    DECLARE @ID INT 

    INSERT INTO dbo.Registration_Table (StudentName,Email, CourseCode, CourseTitle) 
    VALUES (@StudentName, @Email, @CourseCode, @CourseTitle) 

    SELECT 2 
END 
+0

[既にAddWithValue()を使用して停止できますか?](http://blogs.msmvps.com/jcoehoorn/blog/2014/05/12/can-we-stop-using-addwithvalue-already)をチェックしてください。 /)を使用し、 '.AddWithValue()'の使用を止めます - 予期しない驚くべき結果につながる可能性があります... –

答えて

2

問題は、これらの2つの行にあります。

insertUser.ExecuteNonQuery(); 

    userId = Convert.ToInt32(insertUser.ExecuteScalar()); 

あなたはinsertUserを実行していますコマンドを2回実行します。 ExecuteNonQueryおよびExecuteScalarにあります。

+0

ああ、ありがとう。私はそれを見落としている..私は編集して確認してみましょう – Mansoor

関連する問題