Mysql主键id问题

时间:2015-09-21 12:25:52

标签: c# sql asp.net visual-studio

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

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

以下是我在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
);

另外我忘了提到当我访问我的Register.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());

2 个答案:

答案 0 :(得分:1)

首先将表格定义更改为:

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填写值。

答案 1 :(得分:0)

您的主键定义错误 试试这个:

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参数