文章出處
文章列表
SQLite是一個輕量級的關系型數據庫,正是由于其精悍小巧,在移動端平臺被廣泛應用,但不適合處理大量數據和批量操作。它的底層是由C語言編寫,最初設計是為了應用于嵌入式,占用資源非常低且簡單易用,而且絕大部分程序語言都可以很好的與之結合。在.net中它的sdk中支持linq實現方式,使用更加方便。
sdk安裝。
安裝好了之后,我們引用dll。
這時候出現這樣的錯誤,這是由于sdk只支持arm和32位的編譯環境。
可以將通過項目屬性將平臺目標選為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.
接下來還需要安裝sqlite-net,可以這行package console的shell命令。
這時候我們的項目中會出現兩個cs文件。
接下來我們來驗證一下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 }
文章列表
全站熱搜