2012-08-14 36 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

不能相信我不得不這樣做,但數據庫連接路徑錯誤。對不起,我錯過了一封信。我會讓所有人滿意,並且「回答」我自己,讓人們可以看到。