8

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

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

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

谢谢

4

6 回答 6

9

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

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

MyNamespace.Properties.Settings.Default.MySetting

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

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

于 2009-09-19T03:56:03.710 回答
5

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

于 2009-09-19T03:46:38.253 回答
4

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

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

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

于 2009-09-19T03:54:26.037 回答
0

编辑是因为我的第一篇文章很清楚

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

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

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

否则,对于您建议的简单内容,纯文本文件将是最简单的。但是,如果数据将变得更复杂,那么编写 Xml 文档将是最合适的。

您还可以查看序列化:

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

于 2009-09-19T03:50:20.977 回答
0

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

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

于 2009-09-20T15:35:20.833 回答
0

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

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

于 2017-03-27T16:42:58.137 回答