轻量级本地数据库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 == )
{
_Conn.CreateTable<Password>();//如果没有此数据库表,就创建
}
}
return _Conn;
}
}
}
参考引用:
数据库系统在WinRT中的使用(二)Part 1:SQLite的使用
Windows Phone8 中如何引用 SQLite 数据库
轻量级本地数据库SQLite在WinRT的使用的更多相关文章
- [转载]Unity3D 游戏引擎之使用C#语言建立本地数据库(SQLITE)
以前在开发中一直使用IOS源生的数据库,通过传递消息的形式在与Unity3D中进行交互.本文我在详细说说如何使用C#语言来在MAC 操作系统下创建Unity本地数据库,我是C#控哇咔咔--- 首先你需 ...
- Python信息采集器使用轻量级关系型数据库SQLite
1,引言Python自带一个轻量级的关系型数据库SQLite.这一数据库使用SQL语言.SQLite作为后端数据库,可以搭配Python建网站,或者为python网络爬虫存储数据.SQLite还在其它 ...
- QT 创建本地数据库(SQLite数据库)存储数据
注意:QT自带SQLITE数据库,不需要再安装 1.创建一个包含创建.查询.修改和删除数据库的数据库类(DataBase) DataBase.h头文件 #pragma once #include &l ...
- .db轻量级本地数据库
1.概述: db文件一般是数据库数据存放文件. db是datebase的缩写,是数据库文件. 我们可以简单的理解为db是本地轻量级数据库(用了缓存,储存少量本地数据,防止断电等突发意外的发生对我们的程 ...
- iOS:本地数据库sqlite的介绍
一.数据库的概念: 1..什么是数据库 SQL Server 2010.Oracle.MySQL 关系数据库 NoSQL数据库-非关系型数据库 数据库主要由表组成 表由字段组成 数据 就是表中的记 ...
- Unity连接本地数据库sqlite
首先要创建一个sqlite的数据库,记住文件地址,拷贝到Assets目录下,创建的数据库文件后缀为.sqlite.具体创建方法百度sqlite 然后百度Mono.Data.Sqlite,这是一个dll ...
- android 本地数据库sqlite的封装
单机android sqlite数据库的实现,这个数据库可与程序一起生成在安装包中 一.下载sqlite3.exe文件 二.运行 cmd 转到sqlite3.exe 所在目录 运行 sqlite ...
- HTML5本地数据库(SQLite)示例
本文转载自http://blog.sina.com.cn/s/blog_641cf27f01016pm5.html 按照国内一HTML5先行者的例子仿写了一个用HTML5 API来操作本地SQLite ...
- (转)HTML5 本地数据库(SQLite) 示例
HTML5 本地数据库(SQLite) 示例 2012-05-07 16:21:13 标签:SQLite HTML5本地数据库 原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作 ...
随机推荐
- Color a Tree HDU - 6241
/* 十分巧妙的二分 题意选最少的点涂色 使得满足输入信息: 1 x的子树涂色数不少于y 2 x的子树外面涂色数不少于y 我们若是把2转化到子树内最多涂色多少 就可以维护这个最小和最大 如果我们二分出 ...
- 2018GDOI记
今年居然是主场.就没有游了. 向死而生.发现最近生活就是印证了我blog的那句话:就算是修罗,也会被生活玩弄于股掌间 想了很久,还是决定要继续写,然后公诸于众. ------------------- ...
- 倒排列表压缩算法汇总——分区Elias-Fano编码貌似是最牛叉的啊!
来看看倒排索引压缩.压缩是拿CPU换IO的最重要手段之一,不论索引是放在硬盘还是内存中.索引压缩的算法有几十种,跟文本压缩不同,索引压缩算法不仅仅需要考虑压缩率,更要考虑压缩和解压性能,否则会解压太慢 ...
- P2831 愤怒的小鸟 状压dp
这个题主要是预处理比较复杂,先枚举打每只鸟用的抛物线,然后找是否有一个抛物线经过两只鸟,然后就没了. 题干: 题目描述 Kiana 最近沉迷于一款神奇的游戏无法自拔. 简单来说,这款游戏是在一个平面上 ...
- multimap的使用 in C++,同一个关键码存在多个值
#include <iostream> #include <string> #include <vector> #include <algorithm> ...
- 3-4 第三天 Generator生成器
Generator是ES6里面的新增规范,ES6其实就是ES2015.ES5.ES6.ES7这些术语大家上网一查就都明白了.JavaScript是一个范程,就是我们说的JS.ES就是ECMA Scri ...
- Python 40 数据库-约束
约束 1.什么是约束 ? 除了数据类型以外额外添加的约束 2.为什么要使用约束 ? 为了保证数据的合法性 完整性 分类: 1.not null 非空约束,数据不能为空----------------- ...
- 使用javac编译java文件
过程中遇到的几个问题记录如下: 1.java -version正常显示java版本,但是javac却显示[不是内部外部命令] 原因:JAVA_HOME设置成了用户环境变量,Path里用%JAVA_HO ...
- 2015 多校赛 第三场 1002 (hdu 5317)
Description Mr. Hdu is interested in Greatest Common Divisor (GCD). He wants to find more and more i ...
- A - Team
Problem description One day three best friends Petya, Vasya and Tonya decided to form a team and tak ...