代码之家  ›  专栏  ›  技术社区  ›  poke

android sqlite:insert/replace方法中的nullcolumnhack参数

  •  94
  • poke  · 技术社区  · 15 年前

    android sdk有一些使用sqlite操作数据的方便方法。然而 insert replace 方法使用一些 nullColumnHack 参数的用法我不明白。

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

    SQL不允许插入完全空的行,因此如果initialvalues为空,则此列[ /替换行 ]将显式分配给 无效的 价值。

    1 回复  |  直到 10 年前
        1
  •  192
  •   CommonsWare    15 年前

    假设您有一个名为 foo 其中所有列都允许 NULL 值或具有默认值。

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

    INSERT INTO foo;
    

    在sqlite中无效。必须至少指定一列:

    INSERT INTO foo (somecol) VALUES (NULL);
    

    因此,如果你通过一个空的 ContentValues insert() ,android和sqlite需要一些可以安全分配的列 无效的 去。如果你有几个这样的栏可供选择,可以通过你选择的选择机制来选择一个:掷骰子、魔术8球(TM)、硬币翻转、隔间伴侣翻转等。

    就我个人而言,我只是把空的 内容值 插入() 但是他们没有问我…-)

    推荐文章