C#ASP.NET、SQL Server:按钮单击插入重复行
我有一个注册表单,在该表单中,单击按钮会调用SQL Server中的存储过程,并插入一个新行。问题是,当我单击(不是偶然双击)时,插入了相同条目的两行。我已经彻底检查了我的代码,但我找不到问题所在 C#按钮点击代码: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
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()
-它可能会导致意外的结果。。。