如何在仅包含ID列的SQLite表中创建新行?

时间:2014-11-02 14:06:13

标签: android sqlite

我在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());

有什么想法吗?

2 个答案:

答案 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)

demo