C# 我使用什么格式来存储相对较少的用户数据

C# 我使用什么格式来存储相对较少的用户数据,c#,winforms,C#,Winforms,我正在为我们当地的高中写一个小程序(免费)。该程序有一个界面,允许用户进入学校假期。这是一个简单的独立Windows应用程序 我应该使用什么格式来存储数据?大的关系数据显然是矫枉过正 我最初的计划是将数据存储在XML文件中。同事们一直建议我使用JSON文件、Access数据库、SQLLite和SQLServerExpress。甚至有人建议使用老式的INI文件 嗯,显然SQL Express是一个成熟的数据库-它可能是有意义的。如果他们已经有了数据库,为什么不使用它呢?;) 否则,我可能会使用XM

我正在为我们当地的高中写一个小程序(免费)。该程序有一个界面,允许用户进入学校假期。这是一个简单的独立Windows应用程序

我应该使用什么格式来存储数据?大的关系数据显然是矫枉过正


我最初的计划是将数据存储在XML文件中。同事们一直建议我使用JSON文件、Access数据库、SQLLite和SQLServerExpress。甚至有人建议使用老式的INI文件

嗯,显然SQL Express是一个成熟的数据库-它可能是有意义的。如果他们已经有了数据库,为什么不使用它呢?;)


否则,我可能会使用XML文件。

我建议使用XML文件和类型化数据集。
您需要弄清楚将XML文件放在哪里


请注意,如果您希望允许多个用户使用它,则需要使用数据库,如Access或SQL Server。

像这样的项目有一个快速变大的习惯,如果他们这样做,您的XML文件将变得复杂,并成为管理的负担

我不建议将数据存储在xml文件或json中——它们只是不同名称的文本文件,都有相同的问题——您无法控制谁来编辑它们

使用某种数据库,首先从小数据库开始(Access、SQLLite)

编辑

根据您的最新评论,向前滚动到用户已经使用该应用两年的时间点

  • 到那时,您希望存储多少数据
  • 用户是否需要回顾历史数据以查看(例如)他们去年这个时候做了什么
现在更是如此

  • 星期四下午老师A在做什么
  • 2010年5月15日,B老师是否可以免费参加活动
  • 学生C可以参加活动D吗
所有这些问题都可以用SQL轻松/高效地处理。另外,您生成的代码库将更有意义。遍历XML并不是最漂亮的事情

另外,如果您的用户群已经熟悉Excel,那么将Excel链接到SQL数据库(并生成自定义结果)要比使用XML进行链接容易得多。

我愿意

  • SQL Server Express(免费和全面的关系数据库)
  • XML/JSON,如果您不需要数据库(LINQ到XML在这里可能会有很大帮助)

    • 我必须支持Json答案和SQLLite


      另一种选择是使用内置数据库,该数据库包含在所有windows()、ESENT中。有一个codeplex项目可以使使用xml文件变得简单,这似乎是一个不错的选择。使用LINQtoXML,从对象/到对象读取/写入文件应该非常容易。查看XDocument和XElement类
      Access数据库、SQL Lite和SQL Server Express看起来像是过火了。您真的需要一个数据库来存储简单的日历数据吗?您的应用程序会增长吗?

      您考虑过使用SQLite吗?它将生成一个小的.s3db文件。SQLite被各种桌面应用程序用于本地存储

      有一种方法允许您使用ADO.NET对数据进行CRUD


      签出。

      我会使用序列化类。

      从“简单的独立Windows应用程序”中,我觉得它并不重要。我会选择最简单的,或者你最喜欢的。XML是有用的人类可读的,但一个敏感的格式化的平面文件可能是同样明智的。

      < P> >考虑一下,如果你使用一个数据库而不是某种文本文件:你不再是一个“简单的独立Windows应用程序”。现在,您(很可能)已经有了一个安装程序要编写。

      要点。现在,特殊教育部门只有一两个人会使用它。为什么他需要使用多个用户的数据库?唯一的问题是更新文件中的数据,但这仍然可以通过一次只允许一个编辑器来轻松控制?他们会一次使用所有人吗?如果您不希望每个用户都有一个xml文件,那么xml文件可能是个坏主意?如果它只列出假期并允许用户输入假期,我不明白你为什么只需要一个简单的文本文件…这个应用程序只有一两个用户,奥斯卡。我对他们的网络或数据库一无所知。他们不使用Outlook。我的想法是,他们可以简单地将它保存到一个文件夹中,并链接到他们的桌面。我可能必须向他们展示如何做到这一点;o) 使用XML,它将满足您对这个小应用程序的需求。IVlad,它的功能不仅仅是显示假期。这基本上是帮助他们安排日程的一种帮助。关于安排与特殊需要儿童有关的不同类型的事情,有很多规则,我正试图帮助学校处理这些事情。我可能可以用Excel电子表格和一点VBA来实现这一点,但这不是我的方式:)使用SQLite还可以让您在以后的需求需要时转移到一个更大的数据库。我完全不希望它增长太多。然后是XML-除非您可以预见其他项目或更多功能X,然后是SQL Express。您在编辑中取得了优异的成绩。然而,这一日程安排问题与教师或学生的可用性关系不大,而与州和联邦关于不同类型的审查和会议需要花费多少时间的规定有关。感谢您的输入:o)+1,用于推动某种db。最初为两个用户编写的应用程序有两个生命周期终结点:0个用户,因为该应用程序不好或不必要,在这种情况下,你做什么无关紧要,或者很多用户,因为它一直在增长,在这种情况下,如果你事先没有一些db技术,你以后会为此付出高昂的代价。我总是