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),投币翻转,卧室伙伴翻转等。
就个人而言,我只是通过一个空的ContentValues
来insert()
,但他们没有问我… 🙂