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

时间:2009-04-02 17:20:32

标签: .net xml database

我正在开发.net中的小型Windows应用程序。我应该使用什么数据库?

数据库结构

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

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

我想过使用XMLDatabase,但有人说不建议使用它。这是什么原因? 如果可以将XML文件用作数据库,那么您可以建议一些教程或最佳实践吗?我之前使用过XML文件。在将其用作数据库时有什么不同吗?

我还打算稍后将这个应用程序分发给我的朋友,这些人不是程序员,他们对技术的了解也不那么精确。

那么如果我使用的是SQL Server,我该如何在其他机器中部署它?如何将其添加到设置文件中?

更新:感谢您的回答。我想去SQLite,如果有人有兴趣,这里有关于SQLite和.net的tutorial

10 个答案:

答案 0 :(得分:12)

SQLite是一种很好的小型应用程序。它速度快,能力强,占地面积小。

对于.Net,我在以前的项目中使用了一个很棒的托管SQLite库:

http://sqlite.phxsoftware.com/

编辑:

鉴于SQLite和SQL Server Compact版本之间的选择,除非您需要SQLite不支持的一些高级功能,否则您几乎总是希望使用SQLite。

[我的观点已经纠正了SQL Server Compact Edition的安装大小。我最后一次调查它,它更不利。现在可能一样好。]

答案 1 :(得分:4)

根据您提到的内容,我会查看SQLite或查看SQL Server Compact Edition。

Compact Edition的建议是,不会一直运行SQL Server进程。紧凑版仅在应用程序运行时运行。

更新

当谈到两者之间的大小时,SQLite的大小略小于1 mb。 SQL Server Compact版本为1.8mb(请参阅MS Document确认)。

答案 2 :(得分:3)

嗯..因为您的预计数据库大小非常小,所以快速&脏解决方案(比脏IMHO更快)将用XML维护您的数据(或将对象集序列化/反序列化为XML)并使用LINQ进行查询。它很快而且很有效。加上没有数据库引擎随您的应用分发。

免责声明:请记住,IFF您的数据要求仍然很小(假设其单个用户)。一旦你有多个用户同时访问你的数据,或者数据大小增加,或者你需要在使用某种RDBMS时效率最高的函数,这个快速而肮脏的解决方案就会消失,很快你的应用程序就会崩溃。您将需要额外的代码来使其全部工作。 =)

答案 3 :(得分:2)

像SQLite这样的小东西,或者只是在你的应用程序中使用内置的SQLServer Express数据库就可以逃脱。

答案 4 :(得分:2)

如果您使用SQL Server,则有一项功能允许您生成脚本以创建整个数据库。一旦给出有效的连接字符串,执行脚本很容易通过通常的.NET Sql类(SqlConnection等)来完成。

但是,对于这样一个简单的数据模型,SQL Server可能过度。您应该调查其他较小的数据库,如SQLite。

答案 5 :(得分:2)

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

答案 6 :(得分:1)

我不确定是谁建议不要在你的情况下使用XML来保持持久性,但在我看来,考虑到持久化数据的潜在总大小,XML因其简单的集成而非常适合你。 NET应用程序。

听起来像我们只谈论一条记录中最多10个字段的100条记录。这可以很容易地从XML持久化数据中预处理并在内存中处理。我同意NoCarrier可能使用LINQ进行查询。

您正在寻找简单性,而您的用户听起来就像没有第三方依赖关系一样。

答案 7 :(得分:0)

查看SQL Server Express或SQL Server Compact Edition。

答案 8 :(得分:0)

我同意XML作为数据源解决方案。有一本很好的XML书:No Nonsense XML Development with PHP。您可以轻松地将PHP转换为ASP.NET。还有免费的XML和ASP.NET电子书。

XML为您提供的优势在于它是一种简单的数据传输语言,您无需在部署的计算机上安装第三方数据库服务器。

答案 9 :(得分:0)

  

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

     

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

如果您的记录大小合适(您不想在应用中存储电影或类似内容,是吗?)我建议您在启动时阅读平面文本或xml文件并保留所有内容记忆。您可以不时将缓冲区刷新到磁盘。

我不知道你的其他要求(并发性怎么样?)但是真正的DBMS可能对你的问题有点过分而且sqlite(我很喜欢)可能不是解决方案(再次并发,它不是一个sqlites的优势)。