【发布时间】:2009-06-27 04:49:39
【问题描述】:
我希望能够存储有关使用我的应用程序打开的歌曲的信息。我希望用户能够给歌曲评分,并且每次用户使用我的应用程序打开该文件时都会加载此评分。
我还需要知道是否应该将评分存储在数据库或 xml 文件中。
【问题讨论】:
-
随时!我建议将此问题重新命名为“如何在歌曲中存储评分?”
标签: c# .net xml database winforms
我希望能够存储有关使用我的应用程序打开的歌曲的信息。我希望用户能够给歌曲评分,并且每次用户使用我的应用程序打开该文件时都会加载此评分。
我还需要知道是否应该将评分存储在数据库或 xml 文件中。
【问题讨论】:
标签: c# .net xml database winforms
C# ID3 Library 是一个 .Net 类库,用于编辑 id3 标签 (v1-2.4)。我会将评级直接存储到 mp3 的 cmets 部分,因为 id3v1 没有 id3v2 的许多存储功能。如果您想为每个 mp3 存储附加信息,如何在 mp3 上放置一个唯一标识符,然后让它进行数据库查找?
我会谨慎添加自定义标签到 mp3,因为这是破坏大型库的简单方法。此外,我以前也曾走这条路,虽然我很享受从中获得的编程知识,但尝试 iTunes SDK 或 Last FM 之类的东西可能是更好的路线。
【讨论】:
我会使用单文件、零配置数据库。 SQL Server Compact 在你的情况下。
我认为 XML 不是一个好主意。 XML 在数据交换和存储非常少量的信息方面大放异彩。在这种情况下,用户可能会对数千首曲目进行评分(我个人曾在允许评分的在线广播中进行评分),并且您可能需要存储许多有关曲目的其他信息。
如果需要,可以使用 XML 导出程序进行导出和导入。不要将其用作您的主要数据存储区。
【讨论】:
我会将它存储在一个文件中,因为它更容易与 mp3 文件本身一起保存。如果您所做的只是存储评分,您会考虑改为设置 ID3 评分字段吗?
【讨论】:
对于这种非常简单的存储类型,我认为这并不重要。 XML 的优点是它非常易于部署并且可以在您的应用程序之外进行编辑。缺点是,它可以在您的应用程序之外编辑(可能是好的,也可能是坏的,取决于您的情况)
也许另一种选择(只是因为您可以 ;-) 是 OODBMS,请查看 DB4Objects,它非常令人上瘾,而且非常非常酷。
【讨论】:
如前所述,最好将此类信息存储在媒体文件本身中。我的建议是为此使用TagLib# lib(我能找到的最佳媒体元数据库)。非常强大且易于使用。
【讨论】:
我会将评分存储在 XML 文件中,这样可以轻松从外部进行编辑,在 .NET 中易于阅读,而且您不必担心为应用程序提供简单的数据库。
这样的事情可能对你有用:
<Songs>
<Song Title="{SongTitle}">
<Path>{Song path}</Path>
<Rating>3</Rating>
</Song>
</Songs>
【讨论】:
如果歌曲格式支持合适的元数据(例如 MP3),请按照 Kevin 的建议使用元数据。这是迄今为止最好的方法,也是元数据的用途。
如果不是,那么这真的取决于您的应用程序。如果您想共享评级信息 - 特别是通过 Web 服务,那么我会选择 XML:例如,将您的 XML 列表作为一个大提要提供是微不足道的。
XML(或大多数其他文本格式)还有一个优点,即它们可以由人类在文本编辑器中轻松编辑。
如果您有一个更封闭的系统,您想要速度和快速索引,并且/或者您可能还想要存储其他表(例如,关于专辑和乐队的数据),那么该数据库将具有其优势。
【讨论】: