向所有成員致敬,以便花時間閱讀此問題。c#和ado.net應用程序中的可複製性問題
我正在準備一個測驗系統的應用程序,它將從數據庫中隨機抽取問題,並使用ado.net將它們放入界面(c#)中。
我的問題是我希望程序是可移植的,即你不必完全安裝所有系統上的sql服務器,我將運行我的代碼(如果我用戶sql服務器驅動程序)。
這個問題的解決方案是什麼?
向所有成員致敬,以便花時間閱讀此問題。c#和ado.net應用程序中的可複製性問題
我正在準備一個測驗系統的應用程序,它將從數據庫中隨機抽取問題,並使用ado.net將它們放入界面(c#)中。
我的問題是我希望程序是可移植的,即你不必完全安裝所有系統上的sql服務器,我將運行我的代碼(如果我用戶sql服務器驅動程序)。
這個問題的解決方案是什麼?
請勿使用SQL Server。
您可以使用像SQLite這樣的數據庫,這些數據庫可以通過ADO.NET使用並與應用程序一起分發,而不需要單獨安裝數據庫。
請注意,這種方法可能會或可能不會滿足您的實際數據庫需求。
您可以選擇Sql CE(精簡版)數據庫。
博客從Scott Guthrie:
SQL CE並不需要你才能使用它運行一個安裝或安裝一個數據庫服務器 。您可以簡單地將SQL CE二進制文件 複製到ASP.NET應用程序的\ bin目錄中,然後您的網絡應用程序可以將其用作數據庫引擎。它不需要安裝程序或額外的安全權限即可運行。您不需要在機器上擁有管理員帳戶 。只需將您的網絡 應用程序複製到任何服務器上即可使用。即使在網絡託管環境中運行的 中等信任應用程序也是如此。
我喜歡AVD的答案,可能是要走的路,但使用linq to XML將是一個很好的可移植性替代方案。
將您的DataSet序列化爲二進制文件。
DataSet ds = GetData();
ds.RemotingFormat = SerializationFormat.Binary;
BinaryFormatter bin = new BinaryFormatter();
bin.Serialize(stream, ds);