SQLite是一个轻量级的关系型数据库,正是由于其精悍小巧,在移动端平台被广泛应用,但不适合处理大量数据和批量操作。它的底层是由C语言编写,最初设计是为了应用于嵌入式,占用资源非常低且简单易用,而且绝大部分程序语言都可以很好的与之结合。在.net中它的sdk中支持linq实现方式,使用更加方便。

sdk安装。

安装好了之后,我们引用dll。

这时候出现这样的错误,这是由于sdk只支持arm和32位的编译环境。

可以将通过项目属性将平台目标选为32位。

这里要说明一下,sqlite for wp8.1 sdk适用于32位和winrt,调试的时候可以选为32位,编译发布的时候,wp只能识别这个arm平台的环境。否则会报出 Error - Deployment optimization failed due to an assembly that's not valid. Try rebuilding the project, and then try again.

接下来还需要安装sqlite-net,可以这行package console的shell命令。

这时候我们的项目中会出现两个cs文件。

接下来我们来验证一下sdk,首先创建一个表对象。

 using System;
using SQLite; namespace FY.Weather.DataModel
{
[Table("Temp")]
public class Temp
{
[PrimaryKey, AutoIncrement]
public int Id { get; set; } public string JsonData { get; set; } public DateTime CreationDate { get; set; }
}
}

调用sdk创建表。

 private async void CreateTemp()
{
string dbName = ViewModelLocator.Instance.DBName;
if (!await Common.CheckFileAsync(dbName))
{
SQLite.SQLiteAsyncConnection conn = new SQLite.SQLiteAsyncConnection(dbName);
await conn.CreateTableAsync<Temp>();
}
}

获取表数据。

 private async System.Threading.Tasks.Task<Temp> GetTemp(int id)
{
SQLite.SQLiteAsyncConnection conn = new SQLite.SQLiteAsyncConnection(ViewModelLocator.Instance.DBName);
var query = await conn.QueryAsync<Temp>("select * from temp where id=?", new object[] { id });
if (query != null && query.Count > )
{
return query[];
}
return null;
}

添加修改数据。

 private async void AddOrEditTemp(Temp temp)
{
SQLite.SQLiteAsyncConnection conn = new SQLite.SQLiteAsyncConnection(ViewModelLocator.Instance.DBName);
var query = await conn.QueryAsync<Temp>("select * from temp where id=?", new object[] { temp.Id });
if (query != null && query.Count > )
{
await conn.UpdateAsync(temp);
}
else
{
await conn.InsertAsync(temp);
}
}

验证数据库文件是否存在。

 public static async System.Threading.Tasks.Task<bool> CheckFileAsync(string fileName)
{
bool fileIsExist = true;
try
{
Windows.Storage.StorageFile sf = await Windows.Storage.ApplicationData.Current.LocalFolder.GetFileAsync(fileName);
}
catch
{
fileIsExist = false;
}
return fileIsExist;
}

wp8.1 SQLite的基本使用的更多相关文章

  1. wp8.1 sqlite Error - Deployment optimization failed due to an assembly that's not valid.

    这里我们使用的sqlite的版本为3.8.5,vs2013在发布的时候出现 Error - Deployment optimization failed due to an assembly that ...

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

    开发环境:Windows 8.1 开发工具:Visual Studio Express 2013 for Windows SQLite数据库介绍 1.SQLite是一款轻型的嵌入式数据库,使用C++开 ...

  3. (wp8.1开发)添加数据(SQLite)库到app

    wp8.1只支持SQLite. 如何添加SQLite支持请看这里 我这里要说的是如何添加自己的数据库 1.添加数据库到项目中 2.右击选择属性 3.将生成操作改成内容 4.直接就可以引用数据库文件了

  4. wp8使用现有sqlite数据库

    就是把现有文件转移到隔离空间即可 代码如下 private async void CopyDB()        {            StorageFile fage = await Appli ...

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

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

  6. Windows Phone8 中如何引用 SQLite 数据库

    SQLite数据库介绍 1.SQLite是一款轻型的嵌入式数据库,使用C++开发,使用非常广泛 2.SQLite是一款跨平台的数据库,支持Windows.Linux.Android.IOS.Windo ...

  7. Windows Phone8 中如何引用 SQLite 数据库2

    本博文编写环境 VS2013 + WP8 SDK 上篇介绍完了SQLite在wp中的部署(具体请参阅 Windows Phone8 中如何引用 SQLite 数据库),下面来看如何使用 SQLite ...

  8. windows phone 8.1开发SQlite数据库操作详解

    原文出自:http://www.bcmeng.com/windows-phone-sqlite1/ 本文小梦将和大家分享WP8.1中SQlite数据库的基本操作:(最后有整个示例的源码)(希望能通过本 ...

  9. 在Windows Phone 8.1中使用Sqlite数据库

    前言 我的工作目前不涉及到Windows phone的开发,但是业余时间也开发过几款app.以前由于各种条件的限制,只接触到WP8.0设备的app开发. 最近几个月开始将WP8的应用迁移到WP8.1, ...

随机推荐

  1. [转]Web前端浏览器兼容

    转自: http://www.admin10000.com/document/1900.html 前言 浏览器兼容是前端开发人员必须掌握的一个技能,但是初入前端的同学或者其他后台web开发同学往往容易 ...

  2. [MVC 4] ActionResult 使用示例

    在控制器 HomeController.cs 中使用以下代码 public ActionResult Contact() { ViewBag.Message = "Your contact ...

  3. Fiddler 抓包工具总结-bpafter

    转摘https://www.cnblogs.com/shy1766IT/p/5199334.html Fiddler 抓包工具总结   名称 含义 # 抓取HTTP Request的顺序,从1开始,以 ...

  4. py基础3--函数,递归,内置函数

    本节内容 函数基本语法及特性 参数与局部变量 返回值 嵌套函数 递归 匿名函数 函数式编程介绍 高阶函数 内置函数 1. 函数基本语法及特性 背景提要 现在老板让你写一个监控程序,监控服务器的系统状况 ...

  5. 5月23日笔记-js绑定事件、解绑事件、复合事件

    each() $("p").each(function(i,ele){ //alert(ele.innerHTML); alert($("p:eq("+i+&q ...

  6. web开发,click,touch,tap事件浅析

    一.click 和 tap 比较 两者都会在点击时触发,但是在手机WEB端,click会有 200~300 ms,所以请用tap代替click作为点击事件. singleTap和doubleTap 分 ...

  7. js中的event

    event代表事件的状态,例如触发event对象的元素.鼠标的位置及状态.按下的键等等.event对象只在事件发生的过程中才有效.event的某些属性只对特定的事件有意义.比如,fromElement ...

  8. 「小程序JAVA实战」小程序的留言和评价功能(70)

    转自:https://idig8.com/2018/10/28/xiaochengxujavashizhanxiaochengxudeliuyanhepingjiagongneng69/ 目前小程序这 ...

  9. Nginx 实现 IP+项目名 访问

    参考: https://blog.csdn.net/csdn1152789046/article/details/51362735 修改前 项目放在Tomcat的webapps/ROOT/ 目录下面 ...

  10. hibernate查询出的实体,set值后,自动更新到数据库

    1.问题症状描述      最近在处理一个新需求问题,代码的大致逻辑是获取一个实体对象,调用该对象的set方法设置其中的某些字段,然后把修改后的实体作为参数供其他地方调用,根据返回值来决定是否更新这个 ...