如何在不使用数据服务器的情况下将数据存储在客户端计算机上?
我有 C# Windows 应用程序,想在用户的计算机上存储一些数据。我不想使用任何类型的数据服务器,例如 SQL Server 或 Access。用户无法读取此数据,并且此数据的结构类似于带有行的表。
存储数据的最佳方式是什么?我该如何处理这种情况?
请注意,我要编辑和更新此数据。
我所有的数据类型都是字符串,我不想只存储在内存中,因为在系统重新启动后,数据必须仍然可供我的应用程序工作。
如何在不使用数据服务器的情况下将数据存储在客户端计算机上?
我有 C# Windows 应用程序,想在用户的计算机上存储一些数据。我不想使用任何类型的数据服务器,例如 SQL Server 或 Access。用户无法读取此数据,并且此数据的结构类似于带有行的表。
存储数据的最佳方式是什么?我该如何处理这种情况?
请注意,我要编辑和更新此数据。
我所有的数据类型都是字符串,我不想只存储在内存中,因为在系统重新启动后,数据必须仍然可供我的应用程序工作。
为清晰起见进行了编辑。
有2个问题:
如果您不想使用 DB,您可以使用 XML,这是一种非常标准的方法。
PS:如果您希望许多用户使用相同的 XML,也可以在每次操作时锁定文件,这样您就可以避免并发读/写错误。
一个显着的优势是您可以使用 LinqToXML 来执行查询 :)
您可以使用 SQL Server Compact,它是文件中的数据库
或者
如果你愿意,哟
我建议使用 SQL Server Compact,它是一个轻量级的、基于文件的数据库版本。您的用户不必安装 SQL Server 即可使用此选项。
这将是我的首选选项,因为它允许您使用 LINQ 使用 Entity Framework 等技术非常轻松地处理和查询文件中的数据。事实上,您可以使用 POCO 来表示您的应用程序实体,而 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),以便文件可以与您的应用程序相关联。
使用此方法还有一个优点,即您不必一次性将整个文件加载到内存中(即,您可以查询数据并返回数据的子集),如果您只是序列化您将无法做到这一点反对文件。
因为它是一个 Windows 应用程序,您可以创建一个安装该应用程序的文件夹并创建 MS excel 文件并将您的数据保存在该 excel 文件中。