原文:UWP开发-在UWP中使用sqlite

sqlite是一种轻量级的数据库,对于一些资源紧张又需要数据库的开发非常好用。

SQLite 是一个开源的无服务器嵌入式数据库。 这些年来,它已作为面向存储在许多平台和设备上的数据的主要设备端技术出现。 通用 Windows 平台 (UWP) 支持并建议使用 SQLite 实现跨所有 Windows 10 设备系列的本地存储。

SQLite 最适用于手机应用、面向 Windows 10 IoT 核心版(IoT 核心版)的嵌入式应用程序,以及作为企业关系数据库服务器 (RDBS) 数据的缓存。 它将满足大多数本地数据访问需求,除非这些数据需要大量的并发写入,或除了与大多数应用不同的大数据规模方案。

在媒体播放和游戏应用程序中,SQLite 还可用作文件格式来存储目录或其他资源(例如游戏级别),可以从 Web 服务器按原样下载该文件格式。

这里是微软的官方文档:https://msdn.microsoft.com/zh-cn/windows/uwp/data-access/sqlite-databases

1.首先,下载和安装sqlite,这里是下载地址:http://sqlite.org/download.html

对于UWP开发,应该下载Universal Windows Platform版本,就是这个:

下载完成后,安装即可。

2.接着添加对sqlite的引用:

在解决方案中,右击引用-》添加引用-》引用管理器中,打开Universal Windows标签页-》选中SQLite for Universal Windows Platform,确定。

如果这里没有SQLite for Universal Windows Platform,可能版本不对,也可能你没有正确执行第一步。

3.如果你想使用C#开发,当然还要添加SQLitePCL引用。右击引用-》管理Nuget程序包-》在“浏览”标签页下搜索SQLite.Net-PCL,安装SQLitePCL。

安装完成后,你的引用下面应该是类似这样的,注意,一定有红线画的两个引用。

4.现在,你可以开发了。

新建一个类,就Book.cs吧,我这里只是个示例,因为后面用到一下

    public class Book
{
[PrimaryKey,AutoIncrement]
public int Id { get; set; } [MaxLength()]
public string Name { get; set; } public string Description { get; set; }
}

注意添加using SQLite.Net.Attributes;引用

上面的[PrimaryKey,AutoIncrement]是对Id的约束属性,表示Id是主键且自增;[MaxLength(64)]则是表明Name最大长度为64。不懂的谷歌一下,属于SQL的基础内容。

对数据库操作不外乎增删改查,这里提供一个工具类供参考。

using SQLite.Net;
using SQLite.Net.Platform.WinRT;
using SqliteSample.Model;
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Windows.Storage; namespace SqliteSample
{
public class Dal
{
private static string dbPath = string.Empty;
private static string DbPath
{
get
{
if (string.IsNullOrEmpty(dbPath))
{
dbPath = Path.Combine(ApplicationData.Current.LocalFolder.Path, "Sqlite.db");
} return dbPath;
}
} private static SQLiteConnection DbConnection
{
get
{
return new SQLiteConnection(new SQLitePlatformWinRT(), DbPath);
}
} public static void CreateDatabase()
{
// 创建连接
using (var db = DbConnection)
{
//创建Book表
var c = db.CreateTable<Book>(); //插入示例数据
Book book = new Book();
book.Id = ;
book.Name = "C# in depth";
book.Description = "good book";
db.InsertOrReplace(book);
}
} /// <summary>
/// 删除记录
/// </summary>
/// <param name="book">实体</param>
public static void DeleteBook(Book book)
{
using (var db = new SQLiteConnection(new SQLitePlatformWinRT(), DbPath))
{
db.Execute("DELETE FROM Person WHERE Id = ?", book.Id);
}
} /// <summary>
/// 获取全部的记录
/// </summary>
/// <returns>全部实体集合</returns>
public static List<Book> GetAllPersons()
{
List<Book> models; using (var db = new SQLiteConnection(new SQLitePlatformWinRT(), DbPath))
{
models = (from p in db.Table<Book>()
select p).ToList();
} return models;
} /// <summary>
/// 获取记录
/// </summary>
/// <param name="Id">实体Id</param>
/// <returns>实体</returns>
public static Book GetBookById(int Id)
{
using (var db = new SQLiteConnection(new SQLitePlatformWinRT(), DbPath))
{
Book m = (from p in db.Table<Book>()
where p.Id == Id
select p).FirstOrDefault();
return m;
}
} /// <summary>
/// 创建或更新一条记录
/// </summary>
/// <param name="book">实体</param>
public static void SaveBook(Book book)
{
using (var db = new SQLiteConnection(new SQLitePlatformWinRT(), DbPath))
{
if (book.Id == )
{
// 新建
db.Insert(book);
}
else
{
// 更新
db.Update(book);
}
}
}
}
}

Model就是上面的Book.cs

5.结语

sqlite还是挺好用的,除了微软提供的ApplicationData储存用户数据之外,sqlite可以储存图片什么的,不像自带的应用存储对类型有限制。

可以交月报了吗?2333考试啊,一看都31号了,都忘交了好几次月报了,再不交就对不起组织了2333,本来还有几篇,没想到好浪费时间啊,滚去复习啊

UWP开发-在UWP中使用sqlite的更多相关文章

  1. 【UWP开发】uwp应用安装失败

    原文:[UWP开发]uwp应用安装失败 编译出了uwp应用.appx之后双击打开,报错你需要为此应用包而安装的新证书,或者是带有受信任证书的新应用包.系统管理员或应用开发人员可以提供帮助.证书链在不受 ...

  2. Win10 UWP 开发系列:支持异步的SQLite

    上篇文章已经实现了在UWP中使用SQLite作为本地存储,作为移动端的程序,及时响应用户的操作是提高用户体验的重要途径,因此UWP的很多api都是异步的.那么如何使SQLite支持异步呢? 参考SQL ...

  3. (UWP开发)在ListView中通过向右滑动展开汉堡菜单

    首先在移动APP开发中,手势滑动已经成为一个必备的技能,无论大大小小的APP都需要拥有手势滑动功能.在Android和iOS操作系统的APP中,手势滑动比较普及.然而由于国内有关UWP应用的教程比较少 ...

  4. [UWP开发]在windows10中设置壁纸~UserProfilePersonalizationSettings

    在之前的wp8.1和wp8中,微软没有公开设置壁纸的API,只有一个设置锁屏的API,但在Windows10中,微软为我们提供了设置壁纸的API:TrySetWallpaperImageAsync,他 ...

  5. UWP开发随笔——UWP新控件!AutoSuggestBox!

    摘要 要开发一款优秀的application,控件肯定是必不可少的,uwp就为开发者提供了各种各样的系统控件,AutoSuggestBox就是uwp极具特色的控件之一,也是相对于之前win8.1的ua ...

  6. Win10 UWP 开发系列:使用SQLite

    在App开发过程中,肯定需要有一些数据要存储在本地,简单的配置可以序列化后存成文件,比如LocalSettings的方式,或保存在独立存储中.但如果数据多的话,还是需要本地数据库的支持.在UWP开发中 ...

  7. UWP开发随笔——使用SQLite数据库

    摘要 大多数的app都需要数据存储,在数据存储这方面,强大的windows把app数据分为两种:settings和files,并提供了十分简洁的api,让开发者能够轻松使用.但是在有些场景下,app的 ...

  8. Viewbox在UWP开发中的应用

    Windows 8.1 与Windows Phone 8.1的UAP应用,终于在Windows 10上统一到了UWP之下.原来3个不同的project也变为一个.没有了2套xaml页面,我们需要用同一 ...

  9. UWP开发中的方向传感器

    在UWP开发中,我们能使用的到方向有三种: OrientationSensor下的四元数:Compass罗盘的HeadingMagneticNorth:以及SimpleOrientationSenso ...

随机推荐

  1. XMPP之ios即时通讯客户端开发-创建工程添加XMPPFramework及其他框架(三)

    XMPPFramework GitHub: https://github.com/robbiehanson/XMPPFramework 获取源代码 git clone https://github.c ...

  2. 【BZOJ 1028】[JSOI2007]麻将

    [题目链接]:http://www.lydsy.com/JudgeOnline/problem.php?id=1028 [题意] [题解] /* 枚举新加入的一张牌是哪一张牌; 然后尝试把它加进去; ...

  3. Centos root权限的变化

    方法一:更改 /etc/sudoers 文件, 找到以下一行,把前面的凝视(#)去掉 ## Allows people in group wheel to run all commands %whee ...

  4. hadoop 3.x 服役 | 退役数据节点

    在服役前要配置好新增主机的环境变量,ssh等信息,个人环境介绍 hadoop002(namenode),hadoop003(resourcemanager),hadoop004(secondaryna ...

  5. VS2008智能提示解决办法

    最近在VS2008的代码编辑环境中,发现定义了一个类后,然后用类对象点不出对象的属性和方法,于是在网上参考一些资料. 具体步骤如下: 一.开始->Microsoft Visual Studio ...

  6. Eclipse使用技巧总结(六)

    四十.增量查找 Ctrl + J : Ctrl + Shift + J: 四十一.快速跳到某行 Ctrl + L 四十二.快速比较不同 Window-->Preference___查找quick ...

  7. pycharm输出乱码如\xe9\x9d\x92\xe8\x9b\x99\xe7\x8e\x8b\xe5\xad\x90转成中文

    转自:https://blog.csdn.net/baidu_19473529/article/details/54949453 利用Python解决unicode编码问题,有些json在控制台打印也 ...

  8. Attribute-based identification schemes for objects in internet of things

    Methods and arrangements for object identification. An identification request is received from diffe ...

  9. MySQL复制slave服务器死锁案例

    原文:MySQL复制slave服务器死锁案例 MySQL复制刚刚触发了一个bug,该bug的触发条件是slave上Xtrabackup备份的时候执行flushs tables with read lo ...

  10. CMMI 能力成熟度模型集成

    关于CMMI的过程域,请参考 CMMI能力成熟度模型集成的过程区域 1.CMMI/SPCA概述 CMM是“能力成熟度模型(Capability Maturity Model)”的英文简写,该模型由美国 ...