zoukankan      html  css  js  c++  java
  • 轻量级本地数据库SQLite在WinRT的使用

    开发环境: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 数据库

  • 相关阅读:
    poj 3070 矩阵快速乘
    将数字放大显示
    hdu 火车入队 stack
    linq to Entity 数据库除了有主键还有唯一索引,是不是不能更新
    整理:C#写ActiveX, 从代码到打包到签名到发布的示例
    Java—FileOperator
    第二章-递归与分治策略
    第四章-贪心算法
    第五章-回溯法
    Linux中C程序调试、makefile
  • 原文地址:https://www.cnblogs.com/AlvinLiang/p/4446961.html
Copyright © 2011-2022 走看看