在Android中通过SQLite保存数据时COLUMN_NAME_NULLABLE的必要性?

时间:2014-07-08 20:03:01

标签: android sqlite

在Google提供的基本Android教程中,使用insert()函数的putting information into a database部分涉及使用名为COLUMN_NAME_NULLABLE的列,该列在描述{{3}之前未列出}}或数据库本身通过SQLiteOpenDbHelper,所以我假设它是由BaseColumns的实现自动生成的,类似于_ID列。

然而,根据Eclipse,情况并非如此。因此,这是否意味着在我的初始架构/合同中我必须创建一个列(这不是由BaseColumns的实现自动生成的)?

此外,这个专栏的用途是什么?如果没有String "null",它是否只包含ContentValues,如果ContentValues不为空,它是否会保留为空并且未使用?

1 个答案:

答案 0 :(得分:1)

正如文档所述,nullColumnHack是

  

可选的;可能是null。 SQL不允许在不命名至少一个列名的情况下插入完全空行。如果提供的值为空,则不知道列名称,并且无法插入空行。如果未设置为null,则nullColumnHack参数提供可为空的列名称的名称,以便在值为空的情况下显式插入NULL。

因此,nullColumnHack将是数据库中可包含空值的列之一的名称。

如果您确定插入数据库的contentValues永远不会为null或永远不会只包含空值,则可以保留nullColumnHack而不使用名称,因此为null。

如果您尝试插入null ContentValues,则可能会抛出错误。