我在尝试添加值时遇到了sql数据库问题

s5a0g9ez  于 2021-06-25  发布在  Mysql
关注(0)|答案(1)|浏览(312)
public partial class SignUp : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {

    }
    protected void btSignup_Click(object sender, EventArgs e)
    {
        if (tbUname.Text != "" & tbPass.Text != "" && tbName.Text != "" && tbEmail.Text != "" && tbCPass.Text != "")
        {
            if (tbPass.Text == tbCPass.Text)
            {
                String CS = ConfigurationManager.ConnectionStrings["Database_AvaliacaoConnectionString1"].ConnectionString;
                using (SqlConnection con = new SqlConnection(CS))
                {
                    SqlCommand cmd = new SqlCommand("insert into Users Values('" + tbUname.Text + "','" + tbPass.Text + "','" + tbEmail.Text + "','" + tbName.Text + "','')", con);
                    con.Open();

                    cmd.ExecuteNonQuery();
                    lblMsg.Text = "Registration Successfull";
                    lblMsg.ForeColor = Color.Green;
                   // Response.Redirect("~/Signin.aspx");
                }
            }
            else
            {
                lblMsg.ForeColor = Color.Red;
                lblMsg.Text = "Passwords do not match";
            }
        }
        else
        {
            lblMsg.ForeColor = Color.Red;
            lblMsg.Text = "All Fields Are Mandatory";

        }
    }
}

在users表中,我得到了以下值

[Uid] int IDENTITY (1,1) PRIMARY KEY, 
[Username] NVARCHAR(MAX) NULL, 
[Password] NVARCHAR(MAX) NULL, 
[Email] NVARCHAR(MAX) NULL, 
[Name] NVARCHAR(MAX) NULL

我尝试注册时出现以下错误:
system.data.sqlclient.sqlexception:'只有在使用列列表并且启用了identity\U insert时,才能为表'users'中的标识列指定显式值。'
出于某种原因,它不允许我添加值。

ccrfmcuu

ccrfmcuu1#

按列在表中的显示顺序插入列:

"insert into Users Values('" + tbUname.Text + "','" + tbPass.Text + "','" + tbEmail.Text + "','" + tbName.Text + "','')"

你是说第一个领域 UID 应该设置为 tbUname.Text . 那是胡说八道。
相反,请指定要插入的字段,然后按顺序列出这些字段:

"insert into Users (Username, Password, Email, [Name]) Values('" + tbUname.Text + "','" + tbPass.Text + "','" + tbEmail.Text + "','" + tbName.Text + "')"

代码中不相关但麻烦的事情:
不要将sql字符串连接在一起。这就为sql注入攻击留下了很大的空间。而是参数化sql
不要在数据库中以明文形式存储密码。它们应该用盐腌制。

相关问题