用什么数据库适用于Windows应用程序?

3

我正在使用.NET开发一个小型Windows应用程序。我该使用哪种数据库?

数据库结构

表1: 不超过3个字段: 50+条记录 (添加, 删除)

表2: 不超过10个字段: 10-20条记录 (添加, 删除)

我考虑使用XMLDatabase,但有人说不建议使用它。有什么原因呢? 如果使用XML文件作为数据库可以的话,您能否提供一些教程或最佳实践?我以前使用过XML文件。在将其用作数据库时有什么不同吗?

我还计划稍后向我的朋友们分发这个应用程序,这些人不是程序员,对技术了解较少。

如果我使用SQL Server,如何将其部署到其他机器上?如何将其添加到安装文件中?

更新:感谢答案。我决定使用SQLite,这里是一个关于SQLite和.NET的教程,如果有人感兴趣的话。

10个回答

12

SQLite是适用于小型应用程序的好选择。它快速、高效,并且占用空间小。

.Net平台上有一个很棒的托管SQLite库,我在之前的项目中使用过:

http://sqlite.phxsoftware.com/

编辑:

如果要选择SQLite和SQL Server Compact版本,除非需要一些SQLite不支持的高级功能,否则几乎总是应该选择SQLite。

[关于SQL Server Compact Edition的安装大小,我做了更正。上次我查看时情况比较不利,现在可能已经改善了。]


我想补充一下,SQL Server Compact Edition只有1.8Mb的安装文件大小 - http://download.microsoft.com/download/A/4/7/A47B7B0E-976D-4F49-B15D-F02ADE638EBE/Compact_Express_Comparison.doc - Mitchel Sellers

4
根据您提到的内容,我建议您使用SQLite或SQL Server Compact Edition。Compact Edition的推荐是为了避免一直运行SQL Server进程。Compact edition仅在应用程序运行时才运行。
更新:
就大小而言,SQLite的大小略小于1 MB。SQL Server Compact Edition的大小为1.8 MB(请参阅MS Document以确认)。

谢谢Mitchel。我会选择SQLite。 - Shoban

3

嗯,由于您的预计数据库大小很小,一个快速且简单的解决方案(在我看来更快而不脏)是将数据存储为XML(或将对象集合序列化/反序列化为XML),并使用LINQ进行查询。这很快且有效,并且无需分发任何DB引擎与您的应用程序。

免责声明:请记住,只有当您的数据要求保持较小(并且假定其为单个用户)时才适用。一旦有多个用户同时访问您的数据,或者数据大小增加,或者您需要使用某种RDBMS才能实现最有效的功能,这种快速而简单的解决方案就不再适用,很快您的应用程序将在所有额外代码的重压下崩溃。


2

像SQLite这样的小型数据库,或者您可以在应用程序中使用内置的SQLServer Express数据库。


2
如果您使用SQL Server,可以使用该软件的一个功能生成创建整个数据库的脚本。一旦提供了有效的连接字符串,通过通常的.NET Sql类(SqlConnection等)执行脚本非常容易。
然而,对于如此简单的数据模型,SQL Server可能过于复杂。您应该调查其他更小的数据库,例如SQLite。

2

John Saunders提到了SQL Server Express。 公平起见,还有Oracle Express和DB2 Express。 它们各自的功能列表几乎相同。 所有这些都是免费的,至少对于个人使用。


1

我不确定是谁建议你在持久化方面不要使用XML,但在我看来,考虑到你持久化数据的潜在总大小,XML非常适合你,因为它可以很容易地集成到.NET应用程序中。

听起来我们只需要处理100条记录,每个记录最多有10个字段。这些数据可以很容易地从XML持久化数据中预处理并在内存中处理。我同意NoCarrier关于可能使用LINQ进行查询的观点。

你正在寻求简单性,而且你的用户似乎可以不依赖第三方库。


0

可以考虑使用SQL Server Express或SQL Server Compact Edition。


0

我认为XML是数据源解决方案中的不二选择。有一本很好的XML书籍:No Nonsense XML Development with PHP。你可以轻松地将PHP转换成ASP.NET。此外,还有免费的电子书可供学习XML和ASP.NET。

XML带给你的优势在于它是一种简单的数据传输语言,而且你不需要在部署到机器上时安装第三方数据库服务器。


0
表格1:不超过3个字段:50+条记录(添加,删除) 表格2:不超过10个字段:10-20条记录(添加,删除)
如果您的记录大小适中(您不想在应用程序中存储电影之类的东西,对吧?),我建议在启动时从平面文本或XML文件中读取并将所有内容保存在内存中。您可以定期将缓冲区刷新到磁盘上。
我不知道您的其他要求(并发性如何?),但在我看来,真正的DBMS可能会过度复杂化您的问题,而SQLite(我是它的忠实粉丝)可能不是一个解决方案(再次提到并发性,这不是SQLite的优势之一)。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接