我是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();
}
Run Code Online (Sandbox Code Playgroud)
但是这给出了错误:
由于约束违反导致的中止ContentItems.Id可能不是NULL
我已经浏览了文档,但根据我过去的SQL经验,我看不出为什么这不起作用.我很感激你的帮助.谢谢
SQLite使用AUTOINCREMENT关键字创建您正在考虑的IDENTITY列.在您的示例中,ID列不是使用AUTOINCREMENT创建的,因为它被声明为NOT NULL,您必须提供一个值.
您所追求的CREATE语句是:
CREATE TABLE [ContentItems] (
[Id] INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL,
[Title] TEXT NOT NULL,
CONSTRAINT [PK_ContentItems] PRIMARY KEY ([Id])
)
Run Code Online (Sandbox Code Playgroud)
请注意,SQLite使用TEXT数据类型(尽管它会将包含"CHAR"的任何内容映射到该数据类型),并且不需要或不考虑最大字段长度.
| 归档时间: |
|
| 查看次数: |
5231 次 |
| 最近记录: |