資料庫冒似國內的遊戲用戶端用得比較少, 我見的都是用excel自己轉換的...
其實一直想在引擎裡加個資料庫, 但是這個跟遊戲邏輯比較緊密, 就沒搞...
不過, 可以確定的是, 脫離伺服器啟動並執行資料庫最好的選擇應該是SQLite
在用.Net做工具時正好要用, 於是查了一下, 找到兩種解決方案:
- sqlite-net
- 小巧, 一個cs檔案, 一個native dll(C++也可以調用)
- 介面清晰, 基本上一看就懂, 好學
- 支援LINQ, 雖小卻功能一個不少
- 相當於原生sqlite c api的一個封裝吧
- System.Data.SQLite
- 通過ADO.NET的方式訪問
- 可以與VS的Designer整合, 這樣可以省去一個資料編輯器
- 對於使用過ADO.NET的人來說, 很快就可以上手
- 如果以後改用其它資料庫(如MySQL), 可以不改動代碼
把Northwind的資料庫進來做了一個WPF的資料繫結DEMO:
<DockPanel><br /> <ListBox Name="listCategory" ItemsSource="{Binding}" MinWidth="100" SelectedIndex="0"><br /> <ListBox.ItemTemplate><br /> <DataTemplate><br /> <TextBlock Text="{Binding CategoryName}"></TextBlock><br /> </DataTemplate><br /> </ListBox.ItemTemplate><br /> </ListBox><br /> <StackPanel><br /> <TextBox Text="{Binding SelectedItem.CategoryName, ElementName=listCategory}"></TextBox><br /> <TextBox Text="{Binding SelectedItem.Description, ElementName=listCategory}"></TextBox><br /> <Image Source="{Binding SelectedItem.Picture, ElementName=listCategory}"></Image><br /> </StackPanel><br /> </DockPanel><br />
如果追求功能強大與自動化, 可以選擇後者.
前者的話需要自己去定義表格對應的class, 沒有那麼便利. 但是代碼要簡潔很多:
var db = new SQLiteConnection("Database/Northwind.db3");<br /> var result = db.Query<Category>("select * from Categories");<br /> this.DataContext = result;<br />
對於沒有怎麼接觸過ADO.NET的人來說, 這種直接的操作方式更好懂一些吧