Mysql主键id问题

本文关键字:问题 id 主键 Mysql | 更新日期: 2023-09-27 18:13:40

基本上我正在做一个系统,用户输入姓名,电子邮件,密码&用户类型和这些输入将保存到我的本地数据库中。我试图创建一个主键ID,自动生成和增加ID,所以对于第一个输入1,第二个2,第三个3,等等。

相反,我得到一堆字母和随机数,如下所示; d7a8675a c7cf - 406 a - 983 f - 370 d5b96fa62

这是我写的关于Visual Studio数据库设计器的内容

CREATE TABLE [dbo].[Users] (
    [Id]       int IDENTITY(1,1) PRIMARY KEY,
    [UserName] NCHAR (50)    NULL,
    [Email]    NCHAR (50)    NULL,
    [Password] NCHAR (50)    NULL,
    [Role]     NCHAR (15)    NULL
);

我也忘了提到,当我访问我的寄存器。aspx页面,用户可以在字段中填写要插入到数据库中,我调用以下点击注册按钮,它会导致我的SQL代码问题吗?

String insertQuery = "insert into Users (Id,UserName,Email,Password,Role) values (@Id ,@Uname ,@email ,@password ,@role)";
SqlCommand com = new SqlCommand(insertQuery, conn);
com.Parameters.AddWithValue("@Id", newGUID.ToString());
com.Parameters.AddWithValue("@Uname",TextBoxUN.Text);
com.Parameters.AddWithValue("@email", TextBoxEmail.Text);
com.Parameters.AddWithValue("@password", TextBoxPass.Text);
com.Parameters.AddWithValue("@role", DropDownListRole.SelectedItem.ToString());

Mysql主键id问题

首先修改表定义为:

CREATE TABLE [dbo].[Users] (
    [Id]       int IDENTITY(1,1) PRIMARY KEY NOT NULL,
    [UserName] NCHAR (50)    NULL,
    [Email]    NCHAR (50)    NULL,
    [Password] NCHAR (50)    NULL,
    [Role]     NCHAR (15)    NULL
);

和你的代码:

String insertQuery = "insert into Users (UserName,Email,Password,Role) values (@Uname ,@email ,@password ,@role)";
SqlCommand com = new SqlCommand(insertQuery, conn);
com.Parameters.AddWithValue("@Uname",TextBoxUN.Text);
com.Parameters.AddWithValue("@email", TextBoxEmail.Text);
com.Parameters.AddWithValue("@password", TextBoxPass.Text);
com.Parameters.AddWithValue("@role", DropDownListRole.SelectedItem.ToString());

您需要跳过保存com.Parameters.AddWithValue("@Id", newGUID.ToString());,并允许IDENTITY填充值

主键定义错误试试这个:

CREATE TABLE [dbo].[Users] (
    [Id]       int NOT NULL AUTO_INCREMENT,
    [UserName] NCHAR (50)    NULL,
    [Email]    NCHAR (50)    NULL,
    [Password] NCHAR (50)    NULL,
    [Role]     NCHAR (15)    NULL,
    PRIMARY KEY (id)
);

编辑后再编辑:

为什么要填写一个新的GUID作为id参数?

很明显为什么你得到这些随机字符串作为你的id…如果您定义id来自动增加数字,则不必指定id参数