SQLiteDatabase:在运行时动态创建多个表?

时间:2011-11-30 02:51:08

标签: android database sqlite

所以我创建的应用程序需要我在内存中存储多个播放列表。每个播放列表由指定顺序的一组歌曲组成。显然,将整个mp3存储在数据库本身是不合理的。我存储它的方式是,存储其名称,位置,艺术家,专辑和唯一的ID号。

我的问题是:

如何使每个播放列表都可以成为数据库中自己的表?

因此每个播放列表表格如下:

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

我搜索的每个教程都预定义了表,而不是在运行时动态创建。

另外,如果你们认为为每个播放列表创建一个新表并不是最好的方法,你有什么建议?

1 个答案:

答案 0 :(得分:3)

不要在运行时动态创建表格,这很疯狂。你可以用一个非常简单的表结构来完成这个任务,任何人都可以很容易地理解你的程序应该被提供给其他人。

您需要做的就是创建一个播放列表表和PlaylistItems。播放列表至少包含(id,name)。 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一起加入以获取信息,但表上的索引应该使其快速执行。