前言
我的工作目前不涉及到Windows phone的開發,但是業余時間也開發過幾款app。以前由於各種條件的限制,只接觸到WP8.0設備的app開發。
最近幾個月開始將WP8的應用遷移到WP8.1,發現很多API都變了。
最令我印象深刻也最意外的一點是:【找不到MessageBox】了。
卧槽,找不到MessageBox...(此處省略100字)
回歸正題,在WP8階段,微軟為本地數據庫的操作提供了一系列API,需要的朋友可以通過:http://msdn.microsoft.com/zh-cn/library/hh202860查看。
不過在WP8.1(XAML)中這些API已經無法使用了,通過搜索一些資料,最終把以前的一些本地數據庫操作API替換成Sqlite的版本。
步驟
1.建立一個WP8.1的項目。
2.畫一個簡單的UI,如圖:
app具有一個簡單的功能:將“姓名”和“年齡”數據保存到數據庫表中。
app的下半部分是一個列表(現在沒有任何數據所以看不出來),用於顯示當前數據表中的所有信息。
3.建立模型
public class Person { public int ID { get; set; } public string Name { get; set; } public int Age { get; set; } }
4.依次選擇VS菜單欄:【工具】--》【擴展和更新】-->【聯機搜索Sqllite】,如圖:
下載Sqlite for windows phone8.1,我這里已經下載好了。
5.下載安裝完畢之后需要重啟VS。
6.添加對Sqlite的引用,如圖:
7.接下來編譯會發生一個錯誤,需要將編譯架構調整為“ARM”或者“X86”.
8.添加的sqlite引用是C++開發的,在項目中沒有辦法直接使用。我們還需要在項目中添加一些別人封裝好的類。
9.打開Nuget管理器,搜索“Sqlite”,安裝“Sqlite-net”,如圖:
10.安裝完畢后會發現項目中多了兩個類,我們操作Sqlite數據庫主要也就是使用這兩個類中的方法和屬性。如圖:
11.接下來可以做點真正有意義的事情了。首先得我們需要告訴Sqlite哪個屬性是主鍵吧?
我們把“ID”作為主鍵。
public class Person { [PrimaryKey] [AutoIncrement] public int ID { get; set; } public string Name { get; set; } public int Age { get; set; } }
特性"PrimaryKey"表明特性對應的屬性作為表的主鍵。“AutoIncrement”表明這是一個自增列。
12.創建Person表。
/// <summary> /// 創建Person表 /// </summary> /// <returns></returns> private async Task<SQLiteAsyncConnection> CreatePersonTableAsync() { var conn = new SQLiteAsyncConnection(localDBPath); await conn.CreateTableAsync<Person>(); return conn; }
localDBPath是數據庫文件的路徑。
我們可以通過返回的“SQLiteAsyncConnection”對象,對Person表進行增刪查改的操作。
13.目前為止,准備工作都做好了。可以書寫按鈕點擊事件的邏輯了。
private async void AddData_Tapped(object sender, TappedRoutedEventArgs e) { //構造Person對象 Person person = new Person(); person.Name = textboxName.Text; person.Age = int.Parse(textboxAge.Text); //插入到數據庫 var conn = await CreatePersonTableAsync(); await conn.InsertAsync(person); }
需要注意的是CreateTableAsync方法並不會覆蓋掉已有的Table。
備注
這篇文章主要幫助一些不知道如何在WP8.1中使用Sqlite的朋友快速上手。
文章中貼出的代碼並沒有對一些異常做處理,實際項目中這是不可能的。主要是方便大家看到最精要的部分。
其他數據庫的操作方法我就不一一列舉了,查看“SQLiteAsync”類的代碼,5分鍾就可以知道可以通過SQLiteAsync做哪些事情。
友情鏈接:zhoumy博客