2009-12-19 51 views
3

我正在製作一個類似於魔獸世界的RAWR的百科全書程序。我不會保存SQL數據庫中的數據,但是我一直很難做到這一點,所以當我確信有這些輕量級用例的替代品時,我總是這樣做。如果我不打算將數據保存到SQL數據庫中,我應該在哪裏保存它?

例如,我的程序不會通過用戶輸入創建新數據,也不會通過用戶輸入刪除數據。只是一個程序,將顯示我編碼到它的信息。沒有更多,沒有更多。

我應該在哪裏保存這些東西?保存我的意思是,當我釋放程序時將它們存儲起來進行部署。

我主要將要節省只是字符串變量和一些視頻/動畫(see my other question

感謝所以幫助。一如既往,你們搖滾!

+1

@Joel,如果他不需要查詢功能,有很多二進制數據並且正在構建一個桌面應用程序,他爲什麼要使用數據庫? – Ash 2009-12-19 03:53:02

回答

3

舊的文件系統有什麼問題?

您只需在您的應用程序文件夾下創建一個子文件夾,並在您的代碼中始終使用相對於應用程序文件夾的路徑引用此子文件夾中的文件。例如。

string imagePath=Path.Combine(Environment.CurrentDirectory,"SubFolderName\\picture.jpg"); 

我使用的SQLite自己和愛它,但即使它可能是矯枉過正您的需求爲您不要說你需要執行很多查詢操作。

另外,像SQL Server/SQLite這樣的關係型數據庫並不是存儲二進制數據的理想選擇。他們當然可以,但這不是他們最擅長的,因爲他們可能遇到擴展問題。

如果你有很多二進制文件,比如圖像,音樂,視頻等,那麼我的第一選擇就是文件系統。

部署非常簡單,只需將所有必需的資源文件放在子文件夾中,然後將子文件夾放在應用程序文件夾中即可。

另一種選擇是將文件存儲爲嵌入式裝配資源。這可能在主應用程序可執行文件中,或者在單獨的dll程序集中,如果你有更大的文件。你說用戶不會添加或刪除文件,所以這是一個可行的選擇。

0

XML或二進制文件將是我的建議

5

靜態數據的數據庫有什麼問題?沒有數據是靜態的,如果您在數據庫中使用數據庫,則用於創建數據包的管理/設計程序將更容易。如果將它存儲在平面文件中,您是否真的想要編寫查詢邏輯來決定如何查找數據或僅發出簡單的SQL查詢?

使用System.Data.Sqlite它允許您使用嵌入式數據庫,一個沒有服務器進程的單個數據文件。這是一個非常流行的數據庫,我願意打賭你每天都會與它互動。此外,它支持Visual Studio中所有奇妙的RAD功能,用於設計和與您的數據進行交互。

+0

你讓我賣掉了我的好人。但是,如果我失敗了,因爲我從來沒有使用過Sqlite,我會在你家門口尋求幫助! :D再次感謝! :D – 2009-12-19 03:07:04

+0

喬希,你可以分享一個初學者教程如何使用它?我有想法什麼谷歌。 – 2009-12-19 03:17:31

+0

SQLite只是一個數據庫,而System.Data.Sqlite是它的一個ADO.NET提供者。因此,您可以像使用其他ADO.NET提供程序一樣使用它,也可以通過您最喜歡的ORM進行使用。 System.Data.Sqlite還包含一個集成到VS2008服務器資源管理器中的基本GUI數據庫編輯器。有什麼具體的你需要一個教程?如果這樣可能值得提出作爲一個單獨的問題? – itowlson 2009-12-19 03:33:18

2

我的答案取決於你正在談論的數據量。從純粹的設計角度來看,您應該始終將數據與應用程序邏輯分開。所以,你想有一個外部數據文件。但是,如果你真的沒有那麼多的數據,而且它是相對靜態的,那麼你可以把它放在一個XML文件中,並使用Linq到XML來查詢數據。看看XDocument class。這就是說,數據庫通常會讓你的生活更輕鬆,特別是當你獲得一個關係映射工具或對象數據庫的好對象時。我建議你看看使用類似SubSonic SimpleRepository的東西來把你的數據放在SQLite database。或者,更好的是,看看使用pure object database like DB4O

+0

+1我同意,邏輯和數據應該總是分開。讓生活更輕鬆。 – 2009-12-19 03:30:58

0

我的第一個想法是XML(首選)或像Mark Ewer和yetapb這樣的二進制文件暗示。 SQLLite的建議聽起來也很不錯。

另一種選擇是使用OleDb提供程序的Excel電子表格。您將使用SQL語句讀取和寫入數據。如果你走Excel路線,知道有一些古怪習慣,例如: 1)您指定工作簿中您引用哪張工作表的方式(類似於您如何在SQL中引用一個表+一美元標誌和一些括號)。 2)如果你有一列只有文本,但一個單元格有一個數字,OleDb會打嗝出一個異常,除非你按一下數據。我知道這聽起來很奇怪,但這只是一個提醒。我確信在.NET中玩Excel時還有一些小小的怪癖,但我只在現實世界中兩次(儘管這兩次都涉及大量數據)。我絕對不會推薦它用於企業環境。

我建議將多媒體存儲在您的文件系統中,無論你走到哪裏。然後只需要將數據記錄在SQL,Excel,XML或二進制文件中即可。它將使數據管理更容易。

相關問題