类型' System.Data.SqlClient.SqlException'的例外情况在注册asp.net

时间:2015-02-25 21:37:27

标签: c# asp.net registration

我正在尝试创建注册页面,但它没有按计划进行。它不断抛出这个错误:

  

类型' System.Data.SqlClient.SqlException'的异常发生在System.Data.dll中但未在用户代码中处理

在我的表中,我有,

    [userid]          INT          NOT NULL,
    [username]        VARCHAR (50) NULL,

这是我的c#代码

 protected void Button1_Click(object sender, EventArgs e)
        {
            if (txtPassword.Text == txtConfirmPassword.Text)
            {
                string username = txtUsername.Text;
                string password = txtPassword.Text;
                string confirmpassword = txtConfirmPassword.Text;
                string email = txtEmail.Text;

                con.Open();
                String str = "INSERT INTO users (userid, username, password, confirmpassword, email) VALUES(@userid, @username, @password, @confirmpassword, @email)";

                SqlCommand cmd = new SqlCommand(str, con);

                cmd.Parameters.AddWithValue("@username", username);
                cmd.Parameters.AddWithValue("@password", password);
                cmd.Parameters.AddWithValue("@confirmpassword", confirmpassword);
                cmd.Parameters.AddWithValue("@email", email);

                cmd.ExecuteNonQuery();

                lblMessage.Text = "OK!!!!!!!!!!!!!!!!!!!";
                con.Close();
            }
        }

我不确定如何传递用户ID?

更新 需要将IDENTITY设置为数据库中的userid。谢谢大家

2 个答案:

答案 0 :(得分:3)

您的代码尝试写入5个字段,但只传递4个参数 SqlCommand.Parameters集合中缺少@userid参数。

现在有两种可能性。如果您的用户ID字段是IDENTITY列,则您不应为userid字段传递任何内容,并且查询将变为

  String str = @"INSERT INTO users (username, password, confirmpassword, email) 
                VALUES(@username, @password, @confirmpassword, @email)";

或者,如果是普通字段,则需要将该参数添加到SqlCommand参数集中。

答案 1 :(得分:1)

首先;如果isIdentity设置为true,则不传递userId参数。 其次,即使在您的connectionstring中提到它,但您在查询中通过CatalogName.dbo.TableName调用您的表格。

"INSERT INTO dbName.dbo.users (username, password, confirmpassword, email) VALUES(@username, @password, @confirmpassword, @email)";