码迷,mamicode.com
首页 > 数据库 > 详细

轻量级本地数据库SQLite在WinRT的使用

时间:2015-04-28 16:03:46      阅读:175      评论:0      收藏:0      [点我收藏+]

标签:

开发环境: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的使用

标签:

原文地址:http://www.cnblogs.com/AlvinLiang/p/4446961.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!