2012-08-14 61 views
2

我想注册一个用户,用下面的查询:插入自动递增到数据库ASP.net

"INSERT INTO Users (Username, Password, FirstName, Surname, Age, HouseNumber, 
        StreetName, Town, County, Postcode, TelephoneNumber, 
        isBanned, isAdmin) 
VALUES ('" + textboxUsername.Text + "','" + textboxPassword.Text + "','" + 
      textboxFirstName.Text + "','" + textboxSurname.Text + "','" + textboxAge.Text + "','" + textboxHouseNumber.Text + 
    "','" + textboxStreetName.Text + "','" + 
       textboxTown.Text + "','" + textboxCounty.Text + "','" + 
      textboxPostcode.Text + "','" + textboxTelephoneNumber.Text + 
      "', 'false', 'false')", con); 

数据库被设置为你所期望的,只有上述值和用户名,这应该是使用Identity Specification的自动增量值。但是,我收到以下错误:

Cannot insert the value NULL into column 'UserID', table 'myFilePath'; column does not allow nulls. INSERT fails. 

这是为什么?我无法告诉它为UserID插入任何内容,因为数据库需要处理该内容,因此当前UserID是主键,因此不能为空。我究竟做错了什么?这曾经工作在几个月前

+1

你可以发布'Users'的模式吗?也许你忘了在它上面设置自动增量属性。 – 2012-08-14 09:44:12

+0

检查您的自动增量是否已设置。看到这个例子:http://dev.mysql.com/doc/refman/5.0/en/example-auto-increment.html – robasta 2012-08-14 09:44:19

+0

@JohnTotetWoo我不知道该怎么做,对不起,我是比较新的,但我将“身份规范”设置为“是(身份)”为“是”,身份增量为1,身份种子为1 – Andy 2012-08-14 10:25:23

回答

2

你也可以提id在查询NULL。它将使用auto-increment得到填补:

INSERT INTO Users 
(UserID, Username, Password, FirstName, Surname, Age, HouseNumber, StreetName, 
Town, County, Postcode, TelephoneNumber, isBanned, isAdmin 
) 
VALUES 
(NULL,'" + textboxUsername.Text + "','" + 
textboxPassword.Text + "','" + textboxFirstName.Text + "','" + 
textboxSurname.Text + "','" + textboxAge.Text + "','" + textboxHouseNumber.Text + "','" + 
textboxStreetName.Text + "','" + textboxTown.Text + "','" + textboxCounty.Text + "','" + 
textboxPostcode.Text + "','" + textboxTelephoneNumber.Text + "', 'false', 'false')", 
con); 

同时检查现场UserID的数据类型,它应该是这样的:

UserID INT unsigned NOT NULL AUTO_INCREMENT PRIMARY KEY; 
+0

通过包含'userid' 'null value'与'userid'的写法是一样的。我认为,OP忘记了在表中设置userid自动增加属性。 – 2012-08-14 09:46:51

1

您可以使用SQL自动递增:

与AUTO_INCREMENT定义表:

CREATE TABLE Users 
(
UserID int NOT NULL AUTO_INCREMENT, 
Username varchar(255) NOT NULL, 
Password varchar(255) , 
..... 
PRIMARY KEY (UserID) 
) 

,然后做你插入:

INSERT INTO Users (Username, Password, FirstName, Surname, Age, HouseNumber, 
        StreetName, Town, County, Postcode, TelephoneNumber, 
        isBanned, isAdmin) 

http://www.w3schools.com/sql/sql_autoincrement.asp

2

确保你有一个序列在你的列,如果不是DD之一:

CREATE SEQUENCE yourschemaname.Users 
    START WITH 1 
    INCREMENT BY 1; 
GO 
+0

我在哪里放? – Andy 2012-08-14 09:49:17

+0

我认为OP是要求MySQL查询 – Omesh 2012-08-14 09:50:56

1

不能相信我不得不这样做,但数据库连接路径错误。对不起,我错过了一封信。我会让所有人满意,并且“回答”我自己,让人们可以看到。