Android SQLite:插入/替换方法中的nullColumnHack参数

pok*_*oke 94 sqlite android

Android SDK有一些使用SQLite操作数据的便捷方法.但是插入替换方法都使用了一些nullColumnHack我不理解的用法参数.

文档解释了以下内容,但是如果一个表有多个允许的列NULL怎么办?我真的不明白:/

SQL不允许插入完全空行,因此如果initialValues为空,则此列[ / row for replace ]将明确赋值NULL.

Com*_*are 193

假设您有一个表foo,其中所有列都允许NULL值或具有默认值.

在某些SQL实现中,这将是有效的SQL:

INSERT INTO foo;
Run Code Online (Sandbox Code Playgroud)

这在SQLite中无效.您必须至少指定一个列:

INSERT INTO foo (somecol) VALUES (NULL);
Run Code Online (Sandbox Code Playgroud)

因此,在你传递一个空的情况下ContentValues,以insert(),Android和SQLite的需要一些列安全地分配NULL给.如果您有多个此类列可供选择,请通过您选择的选择机制选择一个:掷骰子,Magic 8-Ball(TM),硬币翻转,小隔间配合翻转等.

就个人而言,I'd've只是做是非法的传递一个空ContentValuesinsert(),但他们没有问我... :-)