輕量級本機資料庫SQLite在WinRT的使用

來源:互聯網
上載者:User

標籤:

開發環境: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的使用

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.