刚刚构建我的第一个 WinForms 应用程序。
问题 - 在使用应用程序之间保存一些数据的最简单/最佳方法是什么(例如,在这种情况下带有状态和日期/时间的 URL 列表)?我认为不需要数据库。
例如 * 只是存储到文本文件最简单吗?* 或者在 DotNet 中存储到 XML 文件同样容易 * Windows 注册表怎么样 - 这通常是要避免的吗?它在包括 Windows 7 在内的所有版本中都使用兼容 * 数据库 - 这里可能有点矫枉过正 * 也许是一个广泛使用的库?
谢谢
刚刚构建我的第一个 WinForms 应用程序。
问题 - 在使用应用程序之间保存一些数据的最简单/最佳方法是什么(例如,在这种情况下带有状态和日期/时间的 URL 列表)?我认为不需要数据库。
例如 * 只是存储到文本文件最简单吗?* 或者在 DotNet 中存储到 XML 文件同样容易 * Windows 注册表怎么样 - 这通常是要避免的吗?它在包括 Windows 7 在内的所有版本中都使用兼容 * 数据库 - 这里可能有点矫枉过正 * 也许是一个广泛使用的库?
谢谢
查看项目的设置(在解决方案资源管理器 > 属性 > 设置选项卡中右键单击项目),您可以定义许多变量,这些变量在每个用户的程序使用过程中持续存在,例如用户名、上次更新时间、代理服务器,类似的东西。设置本身被序列化为 XML 并存在于每个用户的应用程序设置文件夹中,但您也可以指定默认设置或特定于应用程序的设置。
然后,您可以使用如下设置:
MyNamespace.Properties.Settings.Default.MySetting
如果您只需要在会话之间存储一些变量,那就太好了。如果您需要存储大量数据,请查看其他答案中建议的数据库选项之一或serialization。
如果你真的需要大量的持久性和应用程序存储,你可以使用 sqlite 或 sql server compact(都是独立的)但是在你的情况下,我认为读取/写入公共应用程序数据文件夹中的 xml 文件会很好地满足你的需求并且是非常容易。
在 .NET 中存储到 XML 非常容易,尤其是当您真的只是存储 URL 和时间戳时。您可以创建一个自定义类来保存数据......在运行时,在您的应用程序中操作该类的实例。
当需要保存时,将对象序列化为 XML……当应用程序需要稍后恢复数据时,只需反序列化即可。MSDN 有一个简单的演练。
值得注意的是,正如 Quintin 所做的那样,使用 SQL Server Compact 或其他一些轻量级数据库也可能是一个好主意。XML 既快速又简单——但如果您需要人们共享数据,或者您需要比简单序列化更灵活的东西,那么最好使用数据库。
编辑是因为我的第一篇文章很清楚
就个人而言,如果用户共享数据,我喜欢将数据存储在数据库中。
对于非共享的单用户数据,以下选项都很简单。
如果您的数据在内部存储在 DataSet 中,我建议使用 DataSet.WriteXml 和 DataSet.ReadXml 进行本地存储。
否则,对于您建议的简单内容,纯文本文件将是最简单的。但是,如果数据将变得更复杂,那么编写 Xml 文档将是最合适的。
您还可以查看序列化:
http://msdn.microsoft.com/en-us/library/7ay27kt9(VS.85).aspx
取决于您要存储多少数据,但如果它只是一小组值(而不是一组对象或记录),那么还要查看独立存储:
https://msdn.microsoft.com/en-us/library/3ak841sy(v=vs.110).aspx