Android中BaseColumns的用途是什么?

时间:2011-10-26 07:17:09

标签: java android database sqlite

在Android中使用BaseColumns实现课程有什么用?

4 个答案:

答案 0 :(得分:63)

BaseColumns界面提供了非常常见的_ID_COUNT列的名称。

使用通用名称可以使Android平台(以及开发人员)以统一的方式处理任何数据项,无论其整体结构如何(即其他非ID列)。为接口/类中常用字符串定义常量可避免在整个代码中重复和拼写错误。

CursorAdapter需要使用名为_id的列(BaseColumns._ID的常量值),ContentProvider的实现以及您移交{{{}}的其他位置1}}到Android平台为你做的事情。例如,Cursor的适配器使用ListView列为您提供OnItemClickListener.onItemClick()中单击的列表项的唯一ID,而无需您明确指定每个ID列的内容时间。

是否实施仅由常量组成的界面或引用它们的全名,即_ID是一个品味问题。我个人更喜欢后者,因为BaseColumns._ID来自哪里更为明显,前者感觉就像滥用继承。

答案 1 :(得分:34)

这是一个简单的界面,它添加了两个字段:

public interface BaseColumns
{
    /**
     * The unique ID for a row.
     * <P>Type: INTEGER (long)</P>
     */
    public static final String _ID = "_id";

    /**
     * The count of rows in a directory.
     * <P>Type: INTEGER</P>
     */
    public static final String _COUNT = "_count";
}

Android中使用的内部sqlite数据库附带一个_id列,可自动增量并可用作主键。这也很好地映射了ContentProviders

答案 2 :(得分:1)

BaseColumn接口仅提供列名称 _ID和_COUNT。在构造表时,您仍必须指定使用它们的列。例如,要使用列名_ID创建列,您可以执行以下操作:

public static final String CREATE_TABLE =
    "CREATE TABLE IF NOT EXISTS " + TABLE_NAME + " ("
    + _ID + " INTEGER PRIMARY KEY, "
    + USERNAME + " TEXT NOT NULL, "
    + PASSWORD + " TEXT NOT NULL, "
    + EMAIL + " TEXT NOT NULL UNIQUE)";

答案 3 :(得分:0)

它是一个界面,看起来像这样

public interface BaseColumns
{

    public static final String _ID = "_id";


    public static final String _COUNT = "_count";
}

它包含用于SQL lite DB中自动递增的常量,例如id和count。

我们还可以为id创建自己的常量,而无需使用此特定接口。但是像游标适配器这样的函数需要像“ _id”这样的常量,因此最好使用提供的接口!

希望这可以帮助您!! :-)