如何在不使用数据服务器的情况下将数据存储在客户端计

时间:2012-09-11 14:48:36

标签: c#

如何在不使用数据服务器的情况下在客户端计算机上存储数据?

我有C#Windows应用程序,并希望在用户的计算机上存储一些数据。我不想使用任何类型的数据服务器,如SQL Server或Access。用户无法读取此数据,并且此数据的结构类似于带有行的表。

存储数据的最佳方式是什么?我该如何处理这个案子?

请注意,我想编辑和更新此数据。

我的所有数据类型都是字符串,我不想只存储内存,因为在系统重启后,数据仍然可用于我的应用程序。

5 个答案:

答案 0 :(得分:1)

为了清晰而编辑。

有两个问题:

  1. 在哪里存储数据? %APPDATA%适用于特定于应用程序的数据,%UserProfile%适用于特定于用户的数据。
  2. 您应该使用哪种格式和文件类型?您可以通过多种方式存储它,包括XML,CSV等结构化或非结构化格式。如果您不希望用户能够读取内容,则可以通过某种方式对其进行加密。您还可以选择使用本地数据库类型,例如SQLCE或SQLLite,它们可以提供您可能正在寻找的安全性。

答案 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文件中。