如何保存/保存程序信息

时间:2012-02-11 22:46:54

标签: c# reminders

我写了一个在启动时自动运行的提醒程序。我想知道除了SQL-Server之外是否还有一种存储事件,日期和时间数据的方法。我不想在这项工作中使用SQL-Server,因为我认为SQL-Server对于这个简单的任务来说非常重要。我认为我可以使用文件来存储数据。你怎么看待这个?

4 个答案:

答案 0 :(得分:3)

存储信息的一些常用方法:

  • 作为文件。您有许多选项,其中可以存储文件。例如,用户目录和程序目录。进一步说明herehere。我更喜欢使用序列化器(xml或json)。
  • 作为注册表条目。您将信息存储为键值对。
  • 在轻量级数据库中:
    • RavenDB:面向文档,以json格式存储数据
    • SQLite:关系;我建议将此SQLite Admin用于管理目的

注册表项对于用户操作更安全。另一方面,文件可以轻松删除。

您始终可以选择加密信息。

作为旁注,您还可以使用PostSharp声明要存储在注册表中的变量。代码变成这样:

[RegistryBacking]
private bool _boolean;

如果你需要的话,我可以在以后提供代码...当我再次回家时。

答案 1 :(得分:1)

XML。 .NET has classes使得处理xml文件变得容易。如果你要保存结构化数据,那么XML可能是你最好的选择。

答案 2 :(得分:1)

部分

从此document (Managing User Data Deployment Guide, download)

  

Windows将LocalLocalLow文件夹用于应用程序数据   不与用户漫游。通常这些数据是机器   特定的或太大而不能漫游。

     

Windows将Roaming文件夹用于特定于应用程序的数据,例如   作为自定义词典,它是独立于机器的,应该漫游   用户个人资料。

所以,我建议使用AppData\Roaming并持久保存到文件,因为我认为'提醒应用'是特定于用户的。例如,域用户会认为这很有价值(与服务器同步)。

LocalLocalLow(后者用于低完整性模式,对于权限降低的应用程序)更适合某些机器/安装特定数据,可以即时计算

Registry似乎对于少量密钥很有用,但似乎不是这种用法的最佳选择。

还有另一个选项 - IsolatedStorage,当提到的选项不适用时应该使用,例如在使用ClickOnce部署时。

对于如何部分将数据保存到文件中......好吧,选择您喜欢的。你可以使用SQLite数据库,如果你想要更多的控制权和功能,或者只是使用XML序列化到一个文件,如果你考虑使用SQLite一个矫枉过正的话。或任何其他可行的选择。

答案 3 :(得分:1)

我出于非常相似的原因尝试了一些易于部署的数据库,并使用了我的知识。

VistaDB 3.x and 4是我的第一选择,因为它们非常适合SQL Server,并允许我随时切换到sql server。这也支持EF !!!

接下来是db4o by Versant,这非常方便。我主要使用它进行快速原型设计,但我已经部署了几个小型解决方案,非常适合您的应用。

我希望有所帮助!