- 此问题在此处已有答案**:
(9个答案)
6小时前关门了。
我是SQLite的新手,我正在尝试运行以下代码:
using (var cn = new SQLiteConnection("Data Source=:memory:;Version=3;")) {
cn.Open();
var cmd = cn.CreateCommand();
cmd.CommandText = "CREATE TABLE [ContentItems] ([Id] [int] IDENTITY(1,1) NOT NULL, [Title] [nvarchar](100) NOT NULL, CONSTRAINT [PK_ContentItems] PRIMARY KEY ([Id]))";
cmd.ExecuteNonQuery();
var cmd2 = cn.CreateCommand();
cmd2.CommandText = "INSERT INTO [ContentItems] (Title) VALUES ('Test 1')";
cmd2.ExecuteNonQuery();
}
但这给出了误差:
由于违反约束而中止ContentItems.Id不能为NULL
我已经看过了文档,但是基于我过去的SQL经验,我不明白为什么这不起作用。我将感谢帮助。谢谢
1条答案
按热度按时间yzxexxkh1#
SQLite使用AUTOINCREMENT关键字创建IDENTITY列。在您的示例中,ID列不是使用AUTOINCREMENT创建的,因为它被声明为NOT NULL,所以您必须提供一个值。
您要使用的CREATE语句是:
请注意,SQLite使用TEXT数据类型(尽管它会将任何包含“CHAR”的内容Map到该数据类型),并且不需要也不考虑最大字段长度。