【问题标题】:Inserting auto increment into database ASP.net [closed]将自动增量插入数据库 ASP.net [关闭]
【发布时间】:2012-08-14 09:39:25
【问题描述】:

我正在尝试使用以下查询注册用户:

"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,它应该是使用身份规范的自动递增值。但是,我收到以下错误:

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

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

【问题讨论】:

  • 你能发布Users的架构吗?也许你忘了设置自动增量属性。
  • 检查是否设置了自动增量。请参阅此示例:dev.mysql.com/doc/refman/5.0/en/example-auto-increment.html
  • @JohnTotetWoo 我不知道该怎么做对不起,我比较新,但我将“身份规范设置为是,(是身份)设置为是,身份增量为 1,身份种子到 1

标签: asp.net mysql sql database auto-increment


【解决方案1】:

您也可以在查询中将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;

【讨论】:

  • 通过包含userid 和null value 来编写查询与不使用userid 编写查询相同。我认为 OP 忘记设置用户 ID 自动增量属性哦。
【解决方案2】:

确保你的列上有一个序列,如果没有添加一个:

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

【讨论】:

  • 我认为 OP 要求 MySQL 查询。
【解决方案3】:

您可以使用 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

【讨论】:

    【解决方案4】:

    不敢相信我必须这样做,但数据库连接路径错误。对不起,伙计们,我丢失了一封信。我会投票给每个人,并“回答”我自己,以便人们看到。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-08-12
      • 1970-01-01
      • 2013-08-14
      • 2020-06-17
      • 2012-08-21
      • 1970-01-01
      相关资源
      最近更新 更多