Android SQLite:insert/replace方法中的nullColumnHack参数
androidsdk有一些使用SQLite操作数据的方便方法。但是,和方法都使用了一些Android SQLite:insert/replace方法中的nullColumnHack参数,android,sqlite,Android,Sqlite,androidsdk有一些使用SQLite操作数据的方便方法。但是,和方法都使用了一些nullColumnHack参数,我不理解这些参数的用法 文档用以下内容进行了解释,但是如果一个表有多个允许NULL的列,该怎么办?我真的不明白:/ SQL不允许插入一个完全为空的行,因此如果initialValues为空,则此列[/row for replace]将显式分配一个NULL值 假设您有一个名为foo的表,其中所有列要么允许NULL值,要么具有默认值 在某些SQL实现中,这将是有效的SQL: INS
nullColumnHack
参数,我不理解这些参数的用法
文档用以下内容进行了解释,但是如果一个表有多个允许NULL
的列,该怎么办?我真的不明白:/
SQL不允许插入一个完全为空的行,因此如果initialValues为空,则此列[/row for replace]将显式分配一个NULL
值
假设您有一个名为
foo
的表,其中所有列要么允许NULL
值,要么具有默认值
在某些SQL实现中,这将是有效的SQL:
INSERT INTO foo;
这在SQLite中无效。必须至少指定一列:
INSERT INTO foo (somecol) VALUES (NULL);
因此,在将空的ContentValues
传递给insert()
的情况下,Android和SQLite需要一些可以安全地分配NULL
的列。如果您有多个这样的列可供选择,请通过您选择的选择机制选择一个:掷骰子、魔法8球(TM)、掷硬币、隔间伴侣翻转等
就我个人而言,我刚刚将一个空的ContentValues
传递给insert()
,这是非法的,但他们没有问我…:-)