如何使用自动增量列SQLite插入行

时间:2015-12-14 01:02:36

标签: c# mysql wpf database sqlite

我下载了一个MySQL数据库,并使用这个PHP script将其解析为SQLite。

我在WPF上使用SQLite数据库,我可以使用此library进行一些操作。问题是我试图在一个带有自动增量字段的表中执行INSERT并且它不起作用,这是我的查询:

SQLiteConnection conn = new SQLiteConnection("Data Source=test.db");
conn.Open();
var command = conn.CreateCommand();

command.CommandText = "INSERT INTO tickets(created, user) values ('2015-12-12', 345)";
command.ExecuteNonQuery();
conn.Close();

以下是.db:

中的表票据
CREATE TABLE "tickets" (
  "id" int(11) NOT NULL ,
  "user" int(11) NOT NULL,
  "created" timestamp NOT NULL ,
  PRIMARY KEY ("id")
)

在MySQL,我的查询工作正常,我的 id 列总是获得下一个自动增量值,但在SQLite中,我无法将此值转换为自动增量。当我运行应用程序时,它会崩溃并显示下一条消息:

  

其他信息:约束失败

     

NOT NULL约束失败:tickets.id

我知道该值不应为null,但它应该是自动递增的...这可能吗?

2 个答案:

答案 0 :(得分:1)

您需要在创建表时将字段id指定为自动增量;

选择look

 CREATE TABLE "tickets" (
 "id" INTEGER PRIMARY KEY   AUTOINCREMENT,
 "user" int(11) NOT NULL,
 "created" timestamp NOT NULL);

答案 1 :(得分:1)

您应该使用AUTO INCREMENT关键字标记您的列,如下所示:

CREATE TABLE tickets(
   ID INTEGER PRIMARY KEY   AUTOINCREMENT,
   USER           INTEGER      NOT NULL,
   CREATED            TIMESTAMP       NOT NULL
);

来源:https://www.sqlite.org/autoinc.html