xamarin.Android SQLite存储
在可移植类库 新建:
using SQLite.Net.Interop; using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks; namespace CommonLib
{
/// <summary>
/// 数据存储环境
/// </summary>
public interface IDataStorage
{
/// <summary>
/// 存储路径
/// </summary>
string StoragePath { get; }
/// <summary>
///SQLite 平台环境
/// IOS: SQLite.Net.Platform.XamarinIOS.SQLitePlatformIOS
/// Android: SQLite.Net.Platform.XamarinAndroid.SQLitePlatformAndroid
///...
/// </summary>
ISQLitePlatform SqlitePlatform { get; }
}
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks; using SQLite.Net; namespace CommonLib
{
/// <summary>
/// SQLite上下文
/// </summary>
public class SQLiteContext
{
public SQLiteContext() { } private IDataStorage _dataStorage; /// <summary>
/// 构造上下文
/// </summary>
/// <param name="dataStorage">数据存储环境</param>
public SQLiteContext(IDataStorage dataStorage)
{
_dataStorage = dataStorage;
} /// <summary>
/// SQLite上下文
/// </summary>
protected SQLiteContext Connection {
get {
return this;
}
} /// <summary>
/// 创建链接
/// </summary>
/// <returns></returns>
public SQLiteConnection New()
{
if (_dataStorage == null)
throw new ArgumentException("SQLiteContext构造时缺少IDataStorage对象实例!"); return new SQLite.Net.SQLiteConnection(_dataStorage.SqlitePlatform, _dataStorage.StoragePath);
}
}
}
在xamarin.Android 工程内新建 SQLiteStorage.cs
/// <summary>
/// 数据存储环境
/// </summary>
public class SQLiteStorage : IDataStorage
{
/// <summary>
/// 存储路径
/// </summary>
public string StoragePath
{
get
{
// 获取数据库文件存储路径
return System.IO.Path.Combine(
System.Environment.GetFolderPath(
System.Environment.SpecialFolder.Personal), "db.db");
}
} /// <summary>
/// SQLite 平台环境
/// Android: SQLite.Net.Platform.XamarinAndroid.SQLitePlatformAndroid
/// IOS: SQLite.Net.Platform.XamarinIOS.SQLitePlatformIOS
/// ...
/// </summary>
public SQLite.Net.Interop.ISQLitePlatform SqlitePlatform
{
get
{
return new SQLite.Net.Platform.XamarinAndroid.SQLitePlatformAndroid();
}
}
}
使用例子:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text; using SQLite.Net;
using CommonLib; namespace BusinessLib
{
/// <summary>
/// 涉及到操作SQLite时需要继承 ZsCMS.CommonLib.SQLiteContext
/// </summary>
public class TestSqlte: SQLiteContext
{
/// <summary>
///
/// </summary>
/// <param name="dataStorage">数据存储环境</param>
public TestSqlte(IDataStorage dataStorage)
: base(dataStorage)// 将UI层平台信息传入父类.创建当前平台的SQLite上下文
{ } public void Insert(ZsCMS.ModelsLib.TestSqlte model)
{
// 通过父类Connection 创建数据链接
using (var conn= Connection.New())
{
// 当表存在不会被创建,不存在表则创建
conn.CreateTable<ZsCMS.ModelsLib.TestSqlte>(); // 往表中添加数据
conn.Insert(model);
}
} public IEnumerable<ZsCMS.ModelsLib.TestSqlte> Gets()
{
using (var conn = Connection.New())
{
// 查询数据列表
return conn.Query<ZsCMS.ModelsLib.TestSqlte>("select * from TestSqlte");
}
}
}
}
xamarin.Android SQLite存储的更多相关文章
- Xamarin android使用Sqlite做本地存储数据库
android使用Sqlite做本地存储非常常见(打个比方就像是浏览器要做本地存储使用LocalStorage,貌似不是很恰当,大概就是这个意思). SQLite 是一个软件库,实现了自给自足的.无服 ...
- Xamarin android 的WebClient Json下载并存储本地及sqlite数据库
这一点雕虫小技可能对熟悉的人来说已经不值一提.但是我想,既然这些都是常用的功能,集成在一起做个笔记也有点意义吧. 首先,json 是传递数据的事实标准了.所以先说一下将它从服务器端下载下来..net ...
- android之存储篇——SQLite数据库
转载:android之存储篇_SQLite数据库_让你彻底学会SQLite的使用 SQLite最大的特点是你可以把各种类型的数据保存到任何字段中,而不用关心字段声明的数据类型是什么. 例如:可以在In ...
- Android数据存储三剑客——SharedPreferences、File、SQLite
Android中常用的数据存储一般有三种方式:SharedPreferences.文件和SQLite数据库,用来保存需要长时间保存的数据.本文将通过几个具体的小实例来讲解这三种方式的具体实现. 数据存 ...
- [ Android 五种数据存储方式之三 ] —— SQLite存储数据
SQLite是轻量级嵌入式数据库引擎,它支持 SQL 语言,并且只利用很少的内存就有很好的性能.此外它还是开源的,任何人都可以使用它.许多开源项目((Mozilla, PHP, Python)都使用了 ...
- Android数据存储:SQLite
Android数据存储之SQLite SQLite:Android提供的一个标准的数据库,支持SQL语句.用来处理数据量较大的数据.△ SQLite特征:1.轻量性2.独立性3.隔离性4.跨平台性5. ...
- Android 数据存储03之SQLite
SQLite数据存储 Android 集成了 SQLite 数据库.它存储在 /data/data/< 项目文件夹 >/databases/ 下.Android 开发中使用 SQLite ...
- Xamarin.Android之SQLite.NET ORM
一.前言 通过<Xamarin.Android之SQLiteOpenHelper>和<Xamarin.Android之ContentProvider>的学习,我们已经掌握了如何 ...
- Android数据存储之SQLite数据库
Android数据存储 之SQLite数据库简介 SQLite的相关知识,并结合Java实现对SQLite数据库的操作. SQLite是D.Richard Hipp用C语言编写的开源嵌入式数据库引擎. ...
随机推荐
- 前端入门html(标签介绍)
day47 参考:https://www.cnblogs.com/liwenzhou/p/7988087.html # web本质 示例 import socket sk = socket.socke ...
- java实现简单扫雷游戏
/** * 一个简单的扫雷游戏 MainFram.java */ package www.waston; import java.awt.BorderLayout; import java.awt.C ...
- biz_platform项目过程
1.前台界面主要采用React框架.通过Ajax方式将数据与tornado服务器交互.以下代码为请求后台数据. var ThisPage = React.createClass({ render: f ...
- 服务器集群的session管理
应用服务器的高可用架构设计主要基于服务无状态这一特性,但是事实上,业务总是有状态的,单机情况下,Session可由部署在服务器上的web容器(如Jboss)管理.在使用负载均衡的集群环境中,由于负载均 ...
- Python 1行代码实现文本分类(实战笔记),含代码详细说明及运行结果
Python 1行代码实现文本分类(实战笔记),含代码详细说明及运行结果 一.详细说明及代码 tc.py =============================================== ...
- 腾讯云域名申请+ssl证书申请+springboot配置https
阿里云域名申请 域名申请比较简单,使用微信注册阿里云账号并登陆,点击产品,选择域名注册 输入你想注册的域名 进入域名购买页面,搜索可用的后缀及价格,越热门的后缀(.com,.cn)越贵一般,并且很可能 ...
- 利用wget配合bash脚本同时下载多个文件
先把需要下载的文件写入到一个文件中,命名为urls.txt,比如: http://blog.is36.com/a.jpg http://blog.is36.com/b.jpg http://blog. ...
- 【Java并发编程】:Runnable和Thread实现多线程的区别
Java中实现多线程有两种方法:继承Thread类.实现Runnable接口,在程序开发中只要是多线程,肯定永远以实现Runnable接口为主,因为实现Runnable接口相比继承Thread类有如下 ...
- 如何VMare虚拟机里安装Mac操作系统(图文详解)
不多说,直接上干货! 大部分用户玩的是windows,现在,跟随我来玩玩Mac. 1. VMware Workstation 11 2. unlocker 206(for OS X 插件补丁),这是V ...
- JS 禁止F12和右键操作控制台
1.鼠标点击事件 document.onmousedown = function mdClick(event) { var e = event || window.event || arguments ...