所以我创建的应用程序需要我在内存中存储多个播放列表。每个播放列表由指定顺序的一组歌曲组成。显然,将整个mp3存储在数据库本身是不合理的。我存储它的方式是,存储其名称,位置,艺术家,专辑和唯一的ID号。
我的问题是:
如何使每个播放列表都可以成为数据库中自己的表?
因此每个播放列表表格如下:
Playlist {
_id PRIMARY KEY AUTOINCREMENT INTEGER,
title TEXT,
uri TEXT, // Location of file in the phone
album TEXT,
artist TEXT
}
我搜索的每个教程都预定义了表,而不是在运行时动态创建。
另外,如果你们认为为每个播放列表创建一个新表并不是最好的方法,你有什么建议?
答案 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一起加入以获取信息,但表上的索引应该使其快速执行。