如何在不使用数据服务器的情况下在客户端计算机上存储数据?
我有C#Windows应用程序,并希望在用户的计算机上存储一些数据。我不想使用任何类型的数据服务器,如SQL Server或Access。用户无法读取此数据,并且此数据的结构类似于带有行的表。
存储数据的最佳方式是什么?我该如何处理这个案子?
请注意,我想编辑和更新此数据。
我的所有数据类型都是字符串,我不想只存储内存,因为在系统重启后,数据仍然可用于我的应用程序。
答案 0 :(得分:1)
为了清晰而编辑。
有两个问题:
答案 1 :(得分:0)
如果你不想使用DB,你可以使用XML,它是一个非常标准的方法。
PS:如果您希望许多用户使用相同的XML,还要在每次操作时锁定文件,这样就可以避免出现可靠的读/写错误。
一个显着的优点是您可以使用LinqToXML执行查询:)
答案 2 :(得分:0)
您可以使用SQL Server Compact,它是文件中的数据库
或
如果您愿意,哟
答案 3 :(得分:0)
我建议使用SQL Server Compact,它是一个轻量级,基于文件的版本的数据库。 您的用户不必须安装SQL Server才能使用此选项。
这将是我的首选选项,因为它允许您使用LINQ来使用Entity Framework等技术轻松地使用和查询文件中的数据。实际上,您可以使用POCO来表示您的应用程序实体,而Entity Framework将负责将信息读取和写入数据库。
如果您使用的是Entity Framework,则可以使用配置文件自动创建数据库。第一次使用任何实体时,将自动为您生成数据库文件(可以配置)。
<configuration>
<connectionStrings>
<add name="DatabaseContext"
providerName="System.Data.SqlServerCe.4.0"
connectionString="Data Source=C:\Paths\To\Location\DBName.abc"/>
</connectionStrings>
</configuration>
我建议使用系统上的一个特殊文件夹,使其对应用程序的用户透明。
另请注意,您可以拥有所需的扩展名(DBName.abc而不是DBName.sdf),以便该文件可以与您的应用程序相关联。
使用此方法还有一个优点,就是您不必一次性将整个文件加载到内存中(IE可以查询数据并返回数据的子集),如果您不能这样做只需将您的对象序列化为文件。
答案 4 :(得分:-1)
由于它是一个Windows应用程序,您可以创建一个安装该应用程序的文件夹并创建MS excel文件并将数据保存在该Excel文件中。