2014-10-28 45 views
-2

我正在開發一個項目,該項目有一個文本文件形式的數據庫。 該項目是一個Web服務,它通過Web方法調用來回答來自不同用戶的所需數據。 數據庫的文本文件的大小會增加,並且可能具有大於100 MB的大小 如何將此數據文本文件加載到我在asp.net中的整個應用程序中,並將來自不同用戶的每個請求獲取來自內存中加載數據的數據?除此之外,還可以向內存中的此數據庫變量添加更多數據,然後將更改的數據保存在內存中以保存到文件中?讀取文本數據並存儲在應用程序內存中

謝謝 我感謝任何幫助。

+1

你目前在你的任務中面臨的具體問題是你自己來實現這個嗎?您在這裏提出了幾個問題,其中一些問題非常廣泛。 – 2014-10-28 13:52:50

+0

嗨,謝謝你的關注。我創建了一個名爲database的類和一個名爲readData()的方法。對於來自不同用戶的每個請求,我必須創建數據庫對象並調用readData。我想在內存中有一個我的數據庫變量的實例,並在每個請求中訪問它,是否可以使用Global.asax? – user3173814 2014-10-28 13:54:09

+1

您正在使用文本文件作爲數據庫?請問爲什麼? – Tanner 2014-10-28 13:54:28

回答

2

您可以輕鬆將文本文件讀入內存。你可能想把它放在你的Global Application Class(global.asax)的Application_Start函數中。

Application["TheData"] = System.IO.File.ReadAllText(Server.MapPath("~/App_Data/Database.txt")); 

如果您需要重新初始化數據,只需再次運行該代碼行,可能是爲了響應文件上載。

但是,現在你已經在內存中獲得了一個巨大的字符串。你可能需要將它處理成某種結構化的類(並存儲它,而不是字符串),然後有回答問題的方法。它可能看起來像這樣:

MyDatabase db = MyDatabase.LoadFromText(File.ReadAllText(Server.MapPath("~/App_Data/Database.txt"))); 
Application["TheData"] = db; //probably better to make it a one liner 

順便說一句,巨大的文本文件是一個壞主意。使用實際的數據庫而不是文本文件。它們是爲了保存可以改變的數據,並且你可以想出適當的關係結構。

+0

謝謝mason,所以我必須將這些數據加載到Application_Start中,並且對於不同的用戶,我可以訪問此加載的數據,並且不需要再次加載它,對嗎? – user3173814 2014-10-28 14:04:30

+0

@ user3173814 Application_Start是[應用程序啓動時運行的函數](http://www.techrepublic.com/article/working-with-the-aspnet-globalasax-file/)。 [Application class](http://stackoverflow.com/questions/5096544/application-vs-session-vs-cache)是所有用戶會話之間的共享對象。它與Session類似,但由所有人共享。 – mason 2014-10-28 14:07:07

相關問題