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

C# 如何在不使用数据服务器的情况下在客户端计算机上存储数据?,c#,C#,如何在不使用数据服务器的情况下在客户端计算机上存储数据 我有一个C#Windows应用程序,想在用户的计算机上存储一些数据。我不想使用任何类型的数据服务器,如SQL server或Access。用户无法读取此数据,此数据的结构类似于带行的表 存储数据的最佳方式是什么?我怎么处理这个案子 请注意,我想编辑和更新此数据 我所有的数据类型都是字符串,我不想只存储在内存中,因为在系统重新启动后,数据必须仍然可用,我的应用程序才能工作。如果不想使用DB,可以使用XML,这是一种非常标准的方法 PS:如果您

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

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

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

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


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

如果不想使用DB,可以使用XML,这是一种非常标准的方法

PS:如果您希望许多用户使用相同的XML,那么在每次操作时也会锁定文件,这样可以避免并发读/写错误


一个显著的优点是,您可以使用LinqToXML执行查询:)

您可以使用SQL Server Compact,它是文件中的一个DB

如果愿意的话,为了清晰起见,您可以对其进行编辑

有两个问题:

  • 在哪里存储数据?%APPDATA%是应用程序特定数据的良好候选对象,而%UserProfile%是用户特定数据的良好候选对象
  • 您应该使用什么格式和文件类型?您可以以多种方式存储内容,包括结构化或非结构化格式,如XML、CSV等。如果您不希望用户能够阅读内容,可以通过某种方式对其进行加密。您还可以选择使用本地数据库类型,如SQLCE或SQLLite,这可以提供您可能需要的安全性

  • 由于它是windows应用程序,您可以创建安装该应用程序的文件夹,创建MS excel文件并将数据保存在该excel文件中。

    我建议使用SQL Server Compact,它是一种轻量级的、基于文件的数据库版本。 用户无需安装SQL Server即可使用此选项

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

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

    
    
    我建议使用系统上的一个特殊文件夹,使其对应用程序的用户透明

    还要注意的是,您可以拥有任何您想要的扩展名(DBName.abc而不是DBName.sdf),这样文件就可以与您的应用程序相关联


    使用此方法的另一个优点是,您不必一次性将整个文件加载到内存中(即,您可以查询数据并返回数据的子集),如果您只是将对象序列化到文件中,则无法执行此操作。

    数据是否应该共享?每个用户都应该有自己的数据集吗?用户应该能够直接访问数据并对其进行更改,还是只能通过应用程序进行更改?这不是共享,每个用户都有自己的数据集,如果只能通过应用程序进行更改我想销售我的程序,我的客户可能很难设置sqlserver@motevallizadeh-你需要开始阅读了。没有使用SQL Server Compact安装。您必须在来宾计算机上安装SQL Server express edition,直到您可以使用它的SQL Compact不是SQL express!这是两个独立的产品。你的答案的其余部分怎么了?不管怎样,如果数据量不是非常大,请使用xml。如果用户没有安装excel,我的应用程序就不能工作,我也不想在用户计算机上安装任何额外的应用程序。如果我正确阅读了他的问题,他说它不应该是人类可读的。Xml非常易于理解,可能不符合他的要求。如果您愿意,我想可以对其进行加密。我想我的主要观点是将其存储在%APPDATA%目录中,但实际上%USERPROFILE%可能更合适。
    <configuration>
        <connectionStrings>
            <add name="DatabaseContext"
                 providerName="System.Data.SqlServerCe.4.0"
                 connectionString="Data Source=C:\Paths\To\Location\DBName.abc"/>
        </connectionStrings>
    </configuration>