2012-09-11 47 views
0

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

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

什么是最好的方式来存储我的数据?我该如何处理这种情况?

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

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

+1

数据是否应该共享?每个用户应该拥有自己的一组数据吗?用户是否应该直接访问数据并对其进行更改,或者只能通过应用程序进行更改? – Oded

+0

它不是共享,并且每个用户都有自己的一组数据,应该只是通过应用程序 – motevalizadeh

回答

0

我会建议使用基于版本的数据库的轻量级SQL Server Compact,文件。 您的用户不需要必须安装SQL Server才能使用此选项。

这将是我的首选选项,因为它允许您使用实体框架等技术非常轻松地使用LINQ处理和查询文件中的数据。事实上,您可以使用POCO来表示您的应用程序实体,而实体框架将负责将信息读取和写入数据库。

如果您使用的是实体框架,您可以使用配置文件自动创建数据库。第一次使用任何实体时,数据库文件将自动生成(可以配置)。

<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可以查询数据并返回一部分数据),如果您无法执行此操作你只需将你的对象序列化为一个文件。

0

如果你不想使用DB,你可以使用XML,它是一个非常标准的方法。 PS:如果您希望许多用户使用相同的XML,还会锁定每个操作中的文件,以避免出现读/写错误。

而且一个显着的好处是,你可以使用LinqToXML在文件

如果您愿意执行查询:)

+0

没有每个用户都有自己的一组数据 – motevalizadeh

+0

好,无论如何,如果数据量不够丰富,请使用xml。 – Freeman

+0

感谢您的指导 – motevalizadeh

0

您可以使用SQL Server精简,这是一个DB,哟

+0

我想出售我的程序可能是它的硬我的客户安装sql服务器 – motevalizadeh

+0

@motevallizadeh - 你需要开始阅读。没有使用SQL Server Compact进行安装。 – Oded

+0

您必须在客户计算机上安装sql server express版,直到您可以使用它 – motevalizadeh

1

为清晰起见进行了编辑。

有2个问题:

  1. 在何处存放数据? %APPDATA%是用于特定用户数据的特定应用程序数据和%UserProfile%的理想选择。
  2. 你应该使用什么格式和文件类型?您可以用多种方式存储它,包括结构化或非结构化格式,如XML,CSV等。如果您不希望用户能够读取内容,则可以通过某种方式对其进行加密。您还可以选择使用本地数据库类型,如SQLCE或SQLLite,这可以提供您可能需要的安全性。
+1

如果我正确地阅读他的问题,他说它不应该' t是人类可读的。 Xml非常易读,并且可能不符合他的要求。 –

+0

感谢siz为你的向导,我认为如此 – motevalizadeh

+0

我想如果你愿意,它可以被加密。我想我的主要观点是将其存储在%APPDATA%目录中,但实际上%USERPROFILE%可能更合适。 –

-1

因为它是一个Windows应用程序,您可以创建一个安装该应用程序的文件夹并创建MS Excel文件并将该数据保存在该Excel文件中。

+0

如果用户没有安装excel,我的应用程序无法正常工作,我不想在用户计算机上安装任何额外的应用程序 – motevalizadeh

+0

然后使用记事本或xml。 – kandroid

相关问题