3

我正在制作一个类似于魔兽世界RAWR的百科全书程序。我不会将数据保存到 SQL 数据库中,但是当我确定这些较轻的情况下使用有替代方案时,我已经习惯了总是这样做。

例如,我的程序不会通过用户输入创建新数据,也不会通过用户输入删除数据。只是一个程序,它将显示我编码到其中的信息。不多也不少。

我应该把这些东西保存在哪里?保存我的意思是,在我发布程序时存储它们以进行部署。

我主要将只保存字符串变量和一些视频/动画(见我的另一个问题

感谢您的帮助。和往常一样,你们摇滚!

4

5 回答 5

5

What's wrong with a database for static data? No data is static, with a DB your administrative/design program for creating the data package will be much easier if you used at database. If you store it in flat files do you really want to be writing the query logic to decide how to find the data or just issue a simple SQL query?

Use System.Data.Sqlite it lets you use an embedded database, a single data file with no server process. This is an extremely popular database, I'd be willing to bet that you interact with it daily. In addition it supports all the wonderfully RAD features in Visual Studio for designing and interacting with your data.

于 2009-12-19T03:05:29.313 回答
3

好的旧文件系统有什么问题?

您只需在应用程序文件夹下创建一个子文件夹,并且在您的代码中始终使用相对于应用程序文件夹的路径来引用此子文件夹中的文件。例如。

string imagePath=Path.Combine(Environment.CurrentDirectory,"SubFolderName\\picture.jpg");

我自己使用过 SQLite 并喜欢它,但即使它也可能无法满足您的需求,因为您没有说您需要执行许多查询操作。

此外,SQL Server / SQLite 等关系数据库并不是存储二进制数据的理想选择。他们绝对可以,但这不是他们最擅长的,因为他们可能会遇到扩展问题。

如果您有很多二进制文件,例如图像、音乐、视频等,那么我的首选将是文件系统。

部署就像将所有需要的资源文件放在子文件夹中,然后将子文件夹放在应用程序文件夹中一样简单。

另一种选择是将您的文件存储为嵌入式程序集资源。这可以在主应用程序可执行文件中,或者如果您有较大的文件,则可以在单独的 dll 程序集中。您说用户不会添加或删除文件,所以这是一个可行的选择。

于 2009-12-19T03:31:35.470 回答
2

My answer depends on exactly how much data you are talking about. From a purely design perspective, you should always separate your data from your application logic. So, you want to have an external data file. But, if you don’t really have that much data and it is relatively static then you can just put it in an XML file and use Linq to XML to query the data. Take a look at the XDocument class.

That being said, databases do generally make your life easier, especially if you get a good object to relational mapping tool or an object database. I would recommend that you look into using something like SubSonic SimpleRepository to put your data in a SQLite database. Or, even better, take a look at using a pure object database like DB4O!

于 2009-12-19T03:12:12.713 回答
0

Either xml or binary files would be my suggestions

于 2009-12-19T02:49:31.747 回答
0

我的第一个想法是 XML(首选)或 Mark Ewer 和 Yetapb 建议的二进制文件。SQLLite 的建议听起来也不错。

另一种选择是使用 OleDb 提供程序的 Excel 电子表格。您将使用 SQL 语句来读取和写入数据。如果您走 Excel 路线,请知道有一些怪癖需要习惯,例如:1) 您指定要引用的工作簿中的哪个工作表的方式(类似于您在 SQL 中引用表的方式 + 美元符号和一些括号)。2) 如果你有一列只有文本,但一个单元格有一个数字,OleDb 会出现异常,除非你稍微处理一下数据。我知道这听起来很奇怪,但这只是一个提醒。

我敢肯定,在使用 .NET 中的 Excel 时,还有其他一些小问题需要克服,但我在现实世界中只做过两次(尽管两次都涉及大量数据)。对于企业环境,我绝对不会推荐它。

我建议无论您采用哪种方式将多媒体存储在您的文件系统中。然后让数据记录无论是 SQL、Excel、XML 还是二进制指向文件名。它将使您的数据管理更加容易。

于 2009-12-19T16:35:51.130 回答