2012-09-11 45 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

相關問題