我在Android上的SQLite数据库中有一个表,它只包含一个带有行ID的列。此表用于链接不同表中的数据集。当我尝试在表中插入一个新行时,它会抛出此异常:
android.database.sqlite.SQLiteException:near“null”:语法错误 (代码1):,同时编译:INSERT INTO journeyDetailsTable(null) VALUES(NULL)
我的表格是这样创建的:
private static final String CREATE_TABLE_JOURNEY_DETAIL = "create table " +
TABLE_NAME + " (" + ID_COLUMN + " integer primary key autoincrement);";
我正在尝试插入这样的新行:
parentID = db.insert(ANOTHER_TABLE, null, new ContentValues());
有什么想法吗?
答案 0 :(得分:2)
SQLiteDatabase.insert(String, String, ContentValues)的文档明确指出SQL不允许在不命名至少一个列名的情况下插入完全空行。这意味着如果您未指定任何值,则需要指定要在其中插入NULL的列名。您可以使用db.insert(ANOTHER_TABLE, ID_COLUMN, new ContentValues())
来完成此任务。
无论如何,您可能应该重新考虑您的数据库结构,因为设置这样的表似乎不会有效,可维护和可监控,尤其是从长远来看。
答案 1 :(得分:1)
只需将ID_COLUMN作为列中的列名传递,null不是一列,但将null传递给id将使ID自动递增:
INSERT INTO journeyDetailsTable(ID_COLUMN) VALUES (NULL)