Android SQLite:插入/替换方法中的 nullColumnHack 参数
Posted
技术标签:
【中文标题】Android SQLite:插入/替换方法中的 nullColumnHack 参数【英文标题】:Android SQLite: nullColumnHack parameter in insert/replace methods 【发布时间】:2011-02-09 09:55:36 【问题描述】:android SDK 有一些使用 SQLite 操作数据的便捷方法。然而,@ 987654321和replace方法使用一些nullColumnHack
参数我不明白的使用。
文档用以下内容解释了它,但如果表格有多列允许NULL
?我真的不明白:/
SQL 不允许插入完全空的行,因此如果 initialValues 为空,则此列 [/row for replace] 将显式分配一个
NULL
值。
【问题讨论】:
【参考方案1】:假设您有一个名为 foo
的表,其中所有列都允许 NULL
值或具有默认值。
在某些 SQL 实现中,这将是有效的 SQL:
INSERT INTO foo;
这在 SQLite 中无效。您必须至少指定一列:
INSERT INTO foo (somecol) VALUES (NULL);
因此,如果您将空的ContentValues
传递给insert()
,Android 和SQLite 需要一些可以安全地将NULL
分配给的列。如果您有多个这样的列可供选择,请通过您选择的选择机制选择一个:掷骰子、Magic 8-Ball(TM)、硬币翻转、小隔间翻转等。
就个人而言,我只是将空的ContentValues
传递给insert()
是违法的,但他们没有问我... :-)
【讨论】:
以上是关于Android SQLite:插入/替换方法中的 nullColumnHack 参数的主要内容,如果未能解决你的问题,请参考以下文章
在单击按钮时将数据插入 Android Studio 中的 SQlite 数据库
将我的应用程序的 sqlite db 替换为 android 30+ 中的备份数据库
如何从 android studio 中的 SQLite 插入中删除不需要的字符