WinForms - 这是保存一些数据最简单的方法吗?

时间:2009-09-19 03:43:41

标签: c# winforms persistence

刚刚构建我的第一个WinForms应用程序。

问题 - 在使用应用程序之间保存一些数据的最简单/最佳方法是什么(例如,URL状态列表和日期/时间在这种情况下)?我认为不需要数据库。

例如 *只是存储到文本文件最简单? *或者在DotNet中存储到XML文件一样容易 * Windows注册表怎么样?这通常是要避免的吗?它是否适用于包括Windows 7在内的所有版本 *数据库 - 这里可能有点过头了 *也许是一个广泛使用的图书馆?

由于

6 个答案:

答案 0 :(得分:9)

查看项目的设置(在解决方案资源管理器中右键单击项目>属性>设置选项卡),您可以定义在整个使用过程中保留的多个变量。每个用户的程序,如用户名,上次更新时间,代理服务器,类似的东西。设置本身被序列化为XML并存在于每个用户的“应用程序设置”文件夹中,但您也可以指定默认或特定于应用程序的设置。

然后您可以使用以下设置:

MyNamespace.Properties.Settings.Default.MySetting

有关设置文件的更多信息,请访问@ MSDNthe Code Project

如果您只需要在会话之间存储一些变量,那就太棒了。如果您需要存储大量数据,请查看其他答案中建议的其中一个数据库选项,或serialization

答案 1 :(得分:5)

如果你真的需要繁重的持久性和应用程序存储空间,你可以使用sqlite或sql server compact(两者都是独立的)但是在你的情况下我认为在普通的应用程序数据文件夹中读/写一个xml文件会满足你的需要很好,很容易。

答案 2 :(得分:4)

在.NET中存储到XML非常容易,特别是如果您只是存储URL和时间戳。您可以创建一个自定义类来保存数据...在运行时,在您的应用程序中操作该类的实例。

当需要保存时,将对象序列化为XML ...当应用程序需要稍后恢复数据时,只需反序列化。 MSDN有一个简单的walkthrough

值得注意的是,正如Quintin所做的那样,使用SQL Server Compact或其他一些轻量级数据库也可能是一个好主意。 XML快速而简单 - 但如果您需要人们共享数据,或者您需要比简单序列化更灵活的东西,那么您最好使用数据库。

答案 3 :(得分:0)

编辑,因为我的第一篇帖子显然是泥浆

就个人而言,如果用户共享数据,我喜欢在数据库中存储数据。

对于非共享的单用户数据,以下选项都非常简单。

如果您的数据内部存储在DataSet中,我建议使用DataSet.WriteXml和DataSet.ReadXml进行本地存储。

否则,对于像您建议的那样简单的事情,纯文本文件最简单。 但是,如果数据会更复杂,那么编写Xml文档将是最合适的。

您还可以查看序列化:

http://msdn.microsoft.com/en-us/library/7ay27kt9(VS.85).aspx

答案 4 :(得分:0)

你应该看看db4o。当您只想要简单的持久性时,这个用于.NET和Java对象的轻量级开源对象数据库非常有用。它比文本文件更具查询性,而不像RDBMS那么重。它作为一个库包含在一个文件中,因此没有进程外调用。

可以通过引用db4o库(下载here)将其添加到项目中。你给它一个你想要持久化对象的文件路径,它处理其余的。然后,您可以创建类来封装您的信息,并通过db4o简单地将它们的实例保存到文件中。您可以稍后通过一个非常简单的查询界面来询问它们。

答案 5 :(得分:0)

取决于您要存储多少数据,但如果它只是一小组值(而不是一组对象或记录),那么还要查看隔离存储:

https://msdn.microsoft.com/en-us/library/3ak841sy(v=vs.110).aspx