標籤:
開發環境:Windows 8.1
開發工具:Visual Studio Express 2013 for Windows
SQLite資料庫介紹
1.SQLite是一款輕型的嵌入式資料庫,使用C++開發,使用非常廣泛
2.SQLite是一款跨平台的資料庫,支援Windows、Linux、Android、IOS、Windows Phone系統
3.在Windows Phone中的SQLite是一個非託管組件
4.可以在Windows運行時中使用,也可以在C#項目中使用
5.在C#項目中需要通過Windows運行時組件來訪問
6.跟大部分資料庫的“用戶端/伺服器端”的模式不同,SQLite並不運行在一個獨立的進程中,而是嵌入到程式中成為程式中的一部分。在同一個進程中進行資料操作有著比進程之間通訊更加高的效率
7.整個資料庫(定義,表,資料等)儲存到一個單一的檔案中,使得資料庫遷移變得更加方便。
在應用中添加SQLite引用
SQLite項目組已經為我們製作好了SQLite for Windows Runtime,並將之做成了一個VS擴充,使得使用起來更加方便。
http://www.sqlite.org/download.html 下載並安裝以下兩個外掛程式
安裝完畢之後就可以在項目右鍵添加引用添加C++ Runtime Package和SQLite Package
引用之後sqlite是以dll形式存在的,如果我們需要使用dll中封裝的方法我們需要使用P/Invoke的方法並自己在應用中重新封裝工作量巨大。推薦使用sqlite-net。這是一個開源的輕量級的庫,可以讓.Net平台操作sqlite資料庫。我們可以通過nuget獲得:
完成之後我們將會得到兩個檔案:
這其中不僅通過P/Invoke調用大量的dll中方法,並重新進行了封裝,使得方法大部分支援非同步呼叫,極大的方便了我們使用。
SQLite-net的使用
public static class PasswordController { public static List<Password> GetAll() { var query = Common.Conn.Table<Password>(); return query.ToList(); }
public static Password Get(int id) { var query =Common.Conn.Table<Password>().Where(p => p.Id == id); if (query != null) { return query.FirstOrDefault(); //return query.ToList()[0]; } return null; }
public static void Edit(Password pw) { var query = Common.Conn.Table<Password>().Where(p => p.Id == pw.Id); if (query != null) { Common.Conn.Update(pw); } } public static void Add(Password pw) { Common.Conn.Insert(pw); }
public static void Delete(int id) { var query = Common.Conn.Table<Password>().Where(p => p.Id == id); if (query != null) { Common.Conn.Delete(query.FirstOrDefault()); } } }
static class Common { private const string DbName = "safebox.db";//"db.sqlite";
private static SQLiteConnection _Conn; public static SQLiteConnection Conn { get { if (_Conn == null) { string DbPath = Path.Combine(Windows.Storage.ApplicationData.Current.LocalFolder.Path, DbName); _Conn = new SQLiteConnection(DbPath);//指定本地檔案夾建立資料庫連接 List<SQLiteConnection.ColumnInfo> PasswordCis = _Conn.GetTableInfo("Password");//貌似不區分大小寫,_Conn.GetTableInfo("password")一樣效果 if (PasswordCis.Count == 0) { _Conn.CreateTable<Password>();//如果沒有此資料庫表,就建立 } } return _Conn; } } }
參考引用:
資料庫系統在WinRT中的使用(二)Part 1:SQLite的使用
wp8.1 SQLite的基本使用
Windows Phone8 中如何引用 SQLite 資料庫
輕量級本機資料庫SQLite在WinRT的使用