在Windows Phone 8.1中使用Sqlite數據庫


前言                                                                                                                                                                              

我的工作目前不涉及到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博客


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM