文章出處

SQLite是一個輕量級的關系型數據庫,正是由于其精悍小巧,在移動端平臺被廣泛應用,但不適合處理大量數據和批量操作。它的底層是由C語言編寫,最初設計是為了應用于嵌入式,占用資源非常低且簡單易用,而且絕大部分程序語言都可以很好的與之結合。在.net中它的sdk中支持linq實現方式,使用更加方便。

sdk安裝。

安裝好了之后,我們引用dll。

這時候出現這樣的錯誤,這是由于sdk只支持arm和32位的編譯環境。

4

可以將通過項目屬性將平臺目標選為32位。

這里要說明一下,sqlite for wp8.1 sdk適用于32位和winrt,調試的時候可以選為32位,編譯發布的時候,wp只能識別這個arm平臺的環境。否則會報出 Error - Deployment optimization failed due to an assembly that's not valid. Try rebuilding the project, and then try again.

4

接下來還需要安裝sqlite-net,可以這行package console的shell命令。

2

這時候我們的項目中會出現兩個cs文件。

1

 

接下來我們來驗證一下sdk,首先創建一個表對象。

 1 using System;
 2 using SQLite;
 3 
 4 namespace FY.Weather.DataModel
 5 {
 6     [Table("Temp")]
 7     public class Temp
 8     {
 9         [PrimaryKey, AutoIncrement]
10         public int Id { get; set; }
11 
12         public string JsonData { get; set; }
13 
14         public DateTime CreationDate { get; set; }
15     }
16 }

調用sdk創建表。

1 private async void CreateTemp()
2 {
3     string dbName = ViewModelLocator.Instance.DBName;
4     if (!await Common.CheckFileAsync(dbName))
5     {
6         SQLite.SQLiteAsyncConnection conn = new SQLite.SQLiteAsyncConnection(dbName);
7         await conn.CreateTableAsync<Temp>();
8     }
9 }

 獲取表數據。

 1 private async System.Threading.Tasks.Task<Temp> GetTemp(int id)
 2 {
 3     SQLite.SQLiteAsyncConnection conn = new SQLite.SQLiteAsyncConnection(ViewModelLocator.Instance.DBName);
 4     var query = await conn.QueryAsync<Temp>("select * from temp where id=?", new object[] { id });
 5     if (query != null && query.Count > 0)
 6     {
 7         return query[0];
 8     }
 9     return null;
10 }

添加修改數據。

 1 private async void AddOrEditTemp(Temp temp)
 2 {
 3     SQLite.SQLiteAsyncConnection conn = new SQLite.SQLiteAsyncConnection(ViewModelLocator.Instance.DBName);
 4     var query = await conn.QueryAsync<Temp>("select * from temp where id=?", new object[] { temp.Id });
 5     if (query != null && query.Count > 0)
 6     {
 7         await conn.UpdateAsync(temp);
 8     }
 9     else
10     {
11         await conn.InsertAsync(temp);
12     }
13 }

驗證數據庫文件是否存在。

 1 public static async System.Threading.Tasks.Task<bool> CheckFileAsync(string fileName)
 2 {
 3     bool fileIsExist = true;
 4     try
 5     {
 6         Windows.Storage.StorageFile sf = await Windows.Storage.ApplicationData.Current.LocalFolder.GetFileAsync(fileName);
 7     }
 8     catch
 9     {
10         fileIsExist = false;
11     }
12     return fileIsExist;
13 }

 


文章列表




Avast logo

Avast 防毒軟體已檢查此封電子郵件的病毒。
www.avast.com


arrow
arrow
    全站熱搜
    創作者介紹
    創作者 大師兄 的頭像
    大師兄

    IT工程師數位筆記本

    大師兄 發表在 痞客邦 留言(0) 人氣()