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

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

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

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

谢谢

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

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

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

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

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

MyNamespace.Properties.Settings.Default.MySetting 

有关设置文件的更多信息可以在MSDN或代码项目中找到

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

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

编辑,因为我的第一篇文章是明确的泥

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

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

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

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

您还可以查看序列化:

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

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

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

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

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