在可移植类库 新建:

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存储的更多相关文章

  1. Xamarin android使用Sqlite做本地存储数据库

    android使用Sqlite做本地存储非常常见(打个比方就像是浏览器要做本地存储使用LocalStorage,貌似不是很恰当,大概就是这个意思). SQLite 是一个软件库,实现了自给自足的.无服 ...

  2. Xamarin android 的WebClient Json下载并存储本地及sqlite数据库

    这一点雕虫小技可能对熟悉的人来说已经不值一提.但是我想,既然这些都是常用的功能,集成在一起做个笔记也有点意义吧. 首先,json 是传递数据的事实标准了.所以先说一下将它从服务器端下载下来..net ...

  3. android之存储篇——SQLite数据库

    转载:android之存储篇_SQLite数据库_让你彻底学会SQLite的使用 SQLite最大的特点是你可以把各种类型的数据保存到任何字段中,而不用关心字段声明的数据类型是什么. 例如:可以在In ...

  4. Android数据存储三剑客——SharedPreferences、File、SQLite

    Android中常用的数据存储一般有三种方式:SharedPreferences.文件和SQLite数据库,用来保存需要长时间保存的数据.本文将通过几个具体的小实例来讲解这三种方式的具体实现. 数据存 ...

  5. [ Android 五种数据存储方式之三 ] —— SQLite存储数据

    SQLite是轻量级嵌入式数据库引擎,它支持 SQL 语言,并且只利用很少的内存就有很好的性能.此外它还是开源的,任何人都可以使用它.许多开源项目((Mozilla, PHP, Python)都使用了 ...

  6. Android数据存储:SQLite

    Android数据存储之SQLite SQLite:Android提供的一个标准的数据库,支持SQL语句.用来处理数据量较大的数据.△ SQLite特征:1.轻量性2.独立性3.隔离性4.跨平台性5. ...

  7. Android 数据存储03之SQLite

    SQLite数据存储 Android 集成了 SQLite 数据库.它存储在 /data/data/< 项目文件夹 >/databases/ 下.Android 开发中使用 SQLite ...

  8. Xamarin.Android之SQLite.NET ORM

    一.前言 通过<Xamarin.Android之SQLiteOpenHelper>和<Xamarin.Android之ContentProvider>的学习,我们已经掌握了如何 ...

  9. Android数据存储之SQLite数据库

    Android数据存储 之SQLite数据库简介 SQLite的相关知识,并结合Java实现对SQLite数据库的操作. SQLite是D.Richard Hipp用C语言编写的开源嵌入式数据库引擎. ...

随机推荐

  1. python中 使用join()方法 对各种数据类型中元的素进行合并拼接

    "连接符".join(列表或元组或字符串或字典) 返回的是一个使用连接符进行拼接的字符串 如果对象是列表,元组,就是以一个下标元素为单位进行拼接 如果对象是字符串,就是一个单词元素 ...

  2. SQL语句常见优化十大案例

    1.慢SQL消耗了70%~90%的数据库CPU资源: 2.SQL语句独立于程序设计逻辑,相对于对程序源代码的优化,对SQL语句的优化在时间成本和风险上的代价都很低:3.SQL语句可以有不同的写法: 1 ...

  3. FunDA(12)- 示范:强类型数据源 - strong typed data sources

    FunDA设计的主要目的是解决FRM(Functional Relation Mapping)如Slick这样的批次型操作工具库数据源行间游动操作的缺失问题.FRM产生的结果集就是一种静态集合,缺乏动 ...

  4. docker安装指定版本TAG的镜像

    在docker中安装镜像,一般过程是,docker search 软件名称. 本文以tomcat为例,讲解下载指定版本TAG的tomcat. 搜索tomcat镜像 $ sudo docker sear ...

  5. NOIP2017滚粗记【下】

    (续上篇) Day1: 下午,全竞赛队的人都在竞赛室颓~,再次吐槽下我校网管科的,下午普及考试又把竞赛室的网络切掉了,还好我们机制地准别了一堆单机游戏.普及组考完后,网络又恢复正常了,但晚上9点左右又 ...

  6. WebDriverAPI(3)

    获取页面的Title属性 被测网址http:http://www.baidu.com Java语言版本的API实例代码 String url = "http://www.baidu.com& ...

  7. Eclipse无法编译 build无效 没有class文件

    问题原因: 我遇到这个问题的原因是: maven 插件引起的,maven clean或maven build后,经常无法自动编译class(虽然project自动编译了,但是只有包文件夹名,而没有cl ...

  8. (转)一个MySQL 5.7 分区表性能下降的案例分析

    一个MySQL 5.7 分区表性能下降的案例分析 原文:http://www.talkwithtrend.com/Article/216803 前言 希望通过本文,使MySQL5.7.18的使用者知晓 ...

  9. HUE配置文件hue.ini 的database模块详解(包含qlite、mysql、 psql、和oracle)(图文详解)(分HA集群和非HA集群)

    不多说,直接上干货! Hue配置文件里,提及到,提供有postgresql_psycopg2, mysql, sqlite3 or oracle. 注意:Hue本身用到的是sqlite3. 在哪里呢, ...

  10. 简述C和C++的学习历程

    总是被问到,如何学习C和C++才不茫然,才不是乱学,想了一下,这里给出一个总的回复. 一家之言,欢迎拍砖哈. 1.可以考虑先学习C. 大多数时候,我们学习语言的目的,不是为了成为一个语言专家,而是希望 ...