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

Android SDK提供了一些用SQLite处理数据的简便方法。 但是插入和replace方法都使用了一些我不明白的用法的nullColumnHack参数。

这个文档用下面的内容来解释它,但是如果一个表有多个允许NULL列呢? 我真的不明白:/

SQL不允许插入一个完全空行,所以如果initialValues为空,这个列[ / row for replace ]将显式地分配一个NULL值。

假设您有一个名为foo的表,其中所有列都允许NULL值或具有缺省值。

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

 INSERT INTO foo; 

这在SQLite中是无效的。 您必须至less指定一列:

 INSERT INTO foo (somecol) VALUES (NULL); 

因此,在将一个空的ContentValues传递给insert() ,Android和SQLite需要一些可安全分配NULL列。 如果您有几个这样的柱子可供select,请通过您select的select机制select一个:掷骰子,魔术8球(TM),投币翻转,卧室伙伴翻转等。

就个人而言,我只是通过一个空的ContentValuesinsert() ,但他们没有问我… 🙂