Что такое использование BaseColumns в Android

42

Что такое использование класса из BaseColumns в Android?

Теги:
database

3 ответа

30
Лучший ответ

Это простой интерфейс, который добавляет два поля:

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";
}

Внутренние базы данных sqlite, используемые в Android, поставляются с столбцом _id, который автоинкрементируется и может функционировать как первичный ключ. Это также хорошо отображено с помощью ContentProviders

61

Интерфейс BaseColumns предоставляет имена для очень общих столбцов _ID и _COUNT.

Использование общих имен позволяет платформе Android (и разработчикам) обращаться к любому элементу данных независимо от общей структуры (то есть других столбцов без идентификатора) унифицированным способом. Определение констант для часто используемых строк в интерфейсе/классе позволяет избежать повторения и опечаток по всему коду.

Использование столбца с именем _ID (постоянное значение BaseColumns._ID) требуется CursorAdapter, реализации ContentProvider и в других местах, где вы передаете Cursor на платформу Android, чтобы делать что-то для вас. Например, адаптер ListView использует столбец _ID, чтобы дать вам уникальный идентификатор элемента списка, нажатого в OnItemClickListener.onItemClick(), без необходимости явно указывать, что ваш столбец идентификатора каждый раз.

Независимо от того, реализуются ли интерфейсы, состоящие только из констант или reference с их полным именем, т.е. BaseColumns._ID. Я лично предпочитаю последнее, потому что это более очевидно, где _ID исходит, и первое похоже на злоупотребление наследованием.

  • 0
    thnx, так что это означает, что нам не нужно извлекать идентификатор (то есть первичный ключ) таблицы, она автоматически доступна из BaseColumns._ID
  • 1
    Вам все еще нужно извлечь столбец идентификатора в запросах SELECT , BaseColumns._ID определяет только имя этого столбца идентификатора.
Показать ещё 7 комментариев
0

Интерфейс 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)";

Ещё вопросы

Сообщество Overcoder
Наверх
Меню