C#ASP.NET、SQL Server:按钮单击插入重复行

C#ASP.NET、SQL Server:按钮单击插入重复行,c#,sql-server,C#,Sql Server,我有一个注册表单,在该表单中,单击按钮会调用SQL Server中的存储过程,并插入一个新行。问题是,当我单击(不是偶然双击)时,插入了相同条目的两行。我已经彻底检查了我的代码,但我找不到问题所在 C#按钮点击代码: protected void Button1_Click(object sender, EventArgs e) { int userId = 0; string constr = ConfigurationManager.ConnectionStrings["is

我有一个注册表单,在该表单中,单击按钮会调用SQL Server中的存储过程,并插入一个新行。问题是,当我单击(不是偶然双击)时,插入了相同条目的两行。我已经彻底检查了我的代码,但我找不到问题所在

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

问题在于这两方面:

   insertUser.ExecuteNonQuery();

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

您正在执行
insertUser
命令两次;在
ExecuteNonQuery
ExecuteScalar
中,问题在于这两行:

   insertUser.ExecuteNonQuery();

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

您正在执行
insertUser
命令两次;在
ExecuteNonQuery
ExecuteScalar
中。。谢谢你。我忽略了这一点。。让我来编辑和验证哦,是的。。谢谢你。我忽略了这一点。。让我编辑并验证您是否应该签出并停止使用
.AddWithValue()
-它可能会导致意外的结果…您应该签出并停止使用
.AddWithValue()
-它可能会导致意外的结果。。。