SQLiteDatabase: создавать несколько таблиц динамически во время выполнения? - PullRequest
1 голос
/ 30 ноября 2011

Итак, я создаю приложение, которое требует от меня хранить несколько списков воспроизведения в памяти.Каждый плейлист состоит из группы песен в указанном порядке.Очевидно, что неразумно хранить весь mp3 в самой базе данных.Я храню его так, как его имя, местоположение, исполнителя, альбом и уникальный идентификационный номер.

Мой вопрос такой:

Как сделать так, чтобы каждый плейлист мог быть егособственная таблица в базе данных?

Таким образом, каждая таблица списка воспроизведения выглядит следующим образом:

Playlist {
    _id    PRIMARY KEY AUTOINCREMENT INTEGER,
    title  TEXT,
    uri    TEXT, // Location of file in the phone
    album  TEXT,
    artist TEXT
}

Каждый учебник, который я искал, имеет предопределенные таблицы, которые не создаются динамически во время выполнения.

Кроме того, если вы, ребята, думаете, что создание новой таблицы для каждого плейлиста - не лучший способ для этого, что вы предлагаете?

1 Ответ

3 голосов
/ 30 ноября 2011

Не создавайте таблицы динамически во время безумной работы. Вы можете сделать это с помощью очень простой структуры таблиц, и любой может легко понять, если ваша программа когда-либо будет передана кому-то еще.

Все, что вам нужно сделать, это создать таблицу Playlist и PlaylistItems. Плейлист должен содержать как минимум (идентификатор, имя). PlayListItems будет (id, playlist_id, исполнитель, альбом, местоположение, порядок). PlayListItems.playlist_id будет внешним ключом к полю PlayList.id. Обычно это легко, потому что вы будете отображать список плейлистов по имени для пользователя. Затем, когда вы нажмете на него, вы сделаете отдельный вызов для извлечения содержимого списка воспроизведения (выберите * из PlayListItems, где playlist_id =?).

В качестве альтернативы можно просто указать элементы PlayListItems (id, playlist_id, media_id, ordering), где media_id будет внешним ключом в вашей таблице Media, в котором будут храниться все файлы MP3, найденные на устройстве. В этом случае вам не нужно дублировать имя исполнителя, альбом и местоположение файла в эту таблицу, что может помочь сэкономить место, а также сохранить любое дублирование работы по обновлению этих таблиц в случае смены носителя. Недостатком является то, что вам нужно объединить PlayListItems и Media вместе, чтобы получить информацию, но индекс в таблице должен обеспечивать ее быстрое выполнение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...