2009-12-19 54 views
3

我正在制作一个类似于魔兽世界的RAWR的百科全书程序。我不会保存SQL数据库中的数据,但是我一直很难做到这一点,所以当我确信有这些轻量级用例的替代品时,我总是这样做。如果我不打算将数据保存到SQL数据库中,我应该在哪里保存它?

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

我应该在哪里保存这些东西?保存我的意思是,当我释放程序时将它们存储起来进行部署。

我主要将要节省只是字符串变量和一些视频/动画(see my other question

感谢所以帮助。一如既往,你们摇滚!

+1

@Joel,如果他不需要查询功能,有很多二进制数据并且正在构建一个桌面应用程序,他为什么要使用数据库? – Ash 2009-12-19 03:53:02

回答

3

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

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

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

我使用的SQLite自己和爱它,但即使它可能是矫枉过正您的需求为您不要说你需要执行很多查询操作。

另外,像SQL Server/SQLite这样的关系型数据库并不是存储二进制数据的理想选择。他们当然可以,但这不是他们最擅长的,因为他们可能遇到扩展问题。

如果你有很多二进制文件,比如图像,音乐,视频等,那么我的第一选择就是文件系统。

部署非常简单,只需将所有必需的资源文件放在子文件夹中,然后将子文件夹放在应用程序文件夹中即可。

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

0

XML或二进制文件将是我的建议

5

静态数据的数据库有什么问题?没有数据是静态的,如果您在数据库中使用数据库,则用于创建数据包的管理/设计程序将更容易。如果将它存储在平面文件中,您是否真的想要编写查询逻辑来决定如何查找数据或仅发出简单的SQL查询?

使用System.Data.Sqlite它允许您使用嵌入式数据库,一个没有服务器进程的单个数据文件。这是一个非常流行的数据库,我愿意打赌你每天都会与它互动。此外,它支持Visual Studio中所有奇妙的RAD功能,用于设计和与您的数据进行交互。

+0

你让我卖掉了我的好人。但是,如果我失败了,因为我从来没有使用过Sqlite,我会在你家门口寻求帮助! :D再次感谢! :D – 2009-12-19 03:07:04

+0

乔希,你可以分享一个初学者教程如何使用它?我有想法什么谷歌。 – 2009-12-19 03:17:31

+0

SQLite只是一个数据库,而System.Data.Sqlite是它的一个ADO.NET提供者。因此,您可以像使用其他ADO.NET提供程序一样使用它,也可以通过您最喜欢的ORM进行使用。 System.Data.Sqlite还包含一个集成到VS2008服务器资源管理器中的基本GUI数据库编辑器。有什么具体的你需要一个教程?如果这样可能值得提出作为一个单独的问题? – itowlson 2009-12-19 03:33:18

2

我的答案取决于你正在谈论的数据量。从纯粹的设计角度来看,您应该始终将数据与应用程序逻辑分开。所以,你想有一个外部数据文件。但是,如果你真的没有那么多的数据,而且它是相对静态的,那么你可以把它放在一个XML文件中,并使用Linq到XML来查询数据。看看XDocument class。这就是说,数据库通常会让你的生活更轻松,特别是当你获得一个关系映射工具或对象数据库的好对象时。我建议你看看使用类似SubSonic SimpleRepository的东西来把你的数据放在SQLite database。或者,更好的是,看看使用pure object database like DB4O

+0

+1我同意,逻辑和数据应该总是分开。让生活更轻松。 – 2009-12-19 03:30:58

0

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

另一种选择是使用OleDb提供程序的Excel电子表格。您将使用SQL语句读取和写入数据。如果你走Excel路线,知道有一些古怪习惯,例如: 1)您指定工作簿中您引用哪张工作表的方式(类似于您如何在SQL中引用一个表+一美元标志和一些括号)。 2)如果你有一列只有文本,但一个单元格有一个数字,OleDb会打嗝出一个异常,除非你按一下数据。我知道这听起来很奇怪,但这只是一个提醒。我确信在.NET中玩Excel时还有一些小小的怪癖,但我只在现实世界中两次(尽管这两次都涉及大量数据)。我绝对不会推荐它用于企业环境。

我建议将多媒体存储在您的文件系统中,无论你走到哪里。然后只需要将数据记录在SQL,Excel,XML或二进制文件中即可。它将使数据管理更容易。

相关问题