在Google提供的基本Android教程中,使用insert()
函数的putting information into a database部分涉及使用名为COLUMN_NAME_NULLABLE
的列,该列在描述{{3}之前未列出}}或数据库本身通过SQLiteOpenDbHelper
,所以我假设它是由BaseColumns
的实现自动生成的,类似于_ID
列。
然而,根据Eclipse,情况并非如此。因此,这是否意味着在我的初始架构/合同中我必须创建一个列(这不是由BaseColumns
的实现自动生成的)?
此外,这个专栏的用途是什么?如果没有String "null"
,它是否只包含ContentValues
,如果ContentValues
不为空,它是否会保留为空并且未使用?
答案 0 :(得分:1)
正如文档所述,nullColumnHack是
可选的;可能是null。 SQL不允许在不命名至少一个列名的情况下插入完全空行。如果提供的值为空,则不知道列名称,并且无法插入空行。如果未设置为null,则nullColumnHack参数提供可为空的列名称的名称,以便在值为空的情况下显式插入NULL。
因此,nullColumnHack将是数据库中可包含空值的列之一的名称。
如果您确定插入数据库的contentValues永远不会为null或永远不会只包含空值,则可以保留nullColumnHack而不使用名称,因此为null。
如果您尝试插入null ContentValues,则可能会抛出错误。