2

次のクエリを使用して、ユーザーを登録しようとしています。

"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);

データベースは、上記の値と UserID のみを使用して、期待どおりに設定されています。これは、Identity Specification を使用した自動インクリメント値である必要があります。ただし、次のエラーが表示されます。

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

どうしてこれなの?データベースがそれを処理する必要があるため、UserID に何かを挿入するように指示することはできません。現在、UserID は主キーであるため、null にすることはできません。私は何を間違っていますか?これは数ヶ月前に機能していました

4

4 に答える 4

2

列にシーケンスがあることを確認してください。そうでない場合は、追加してください。

CREATE SEQUENCE yourschemaname.Users
    START WITH 1
    INCREMENT BY 1;
GO
于 2012-08-14T09:44:37.020 に答える
2

idas NULLin query で言及することもできます。それは次を使用して満たされます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;
于 2012-08-14T09:45:27.100 に答える
1

SQL AUTO INCREMENT を使用できます。

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

于 2012-08-14T09:42:15.293 に答える
1

これをしなければならないなんて信じられませんが、データベース接続パスが間違っていました。すみません、手紙がありませんでした。私はみんなに賛成票を投じ、人々が見ることができるように自分自身に「答え」ます。

于 2012-08-14T10:54:44.517 に答える