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 数据库

Android SQLite 插入方法错误?

将我的应用程序的 sqlite db 替换为 android 30+ 中的备份数据库

如何从 android studio 中的 SQLite 插入中删除不需要的字符

如何使用 android 中的 SQLite 扩展类在数据库中插入值?

为啥 SQLite 替换功能会在我的 Android 应用程序中产生错误?