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());
首先修改表定义为:
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参数