gpt4 book ai didi

Android:使用 AUTOINCREMENT 列插入 sqlite 记录

转载 作者:IT王子 更新时间:2023-10-29 06:18:58 26 4
gpt4 key购买 nike

我在 android 上有一个这样创建的 sqlite 数据库:

sqlite> .schema
CREATE TABLE criterion ('_id' INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, active text, important text, sort int, summary text, user text, category_id int, entrytype int);

我可以将记录插入该表的唯一方法是为 _id 指定一个我想自动递增的值。这是我可以让插入工作的唯一方法:

recid = totalrecs + 1;
String q = "insert into criterion (_id, active, important, sort, summary, user, category_id, entrytype) values (" + recid + ", \"1\", \"0\", 99, \"foobar\", \"1\", 99, 0)";
Log.d (TAG, "query:" + q);
mDb.execSQL (q);

如果我将 _id 列排除在外并且没有为 _id 指定值,我会得到一个错误:

android.database.sqlite.SQLiteConstraintException: criterion._id may not be NULL: insert into criterion(active, important, sort, summary, user, category_id, entrytype) values ("1", "0", 99, "foobar", "1", 99, 0)

如何安排查询(或模式)以便 Android 负责递增 _id 列?

更新/修复上面的 2 行(删除 NOT NULL,从查询中删除 _id):

CREATE TABLE criterion ('_id' INTEGER PRIMARY KEY AUTOINCREMENT, active text, important text, sort int, summary text, user text, category_id int, entrytype int);

String q = "insert into criterion (active, important, sort, summary, user, category_id, entrytype) values (\"1\", \"0\", 99, \"foobar\", \"1\", 99, 0)";

最佳答案

从模式中删除 NOT NULL,你就成功了。

澄清:在自动增量列上指定 NOT NULL 使得自动增量不起作用。 NOT NULL 是它的原因,因此您必须指定 _id。

一旦删除它,并且不在插入语句中包含 _id,SQL 将接收 _id 作为 NULL 并自动处理为您设置 _id。

关于Android:使用 AUTOINCREMENT 列插入 sqlite 记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8070252/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com