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语言编写的开源嵌入式数据库引擎. ...
随机推荐
- python中 使用join()方法 对各种数据类型中元的素进行合并拼接
"连接符".join(列表或元组或字符串或字典) 返回的是一个使用连接符进行拼接的字符串 如果对象是列表,元组,就是以一个下标元素为单位进行拼接 如果对象是字符串,就是一个单词元素 ...
- SQL语句常见优化十大案例
1.慢SQL消耗了70%~90%的数据库CPU资源: 2.SQL语句独立于程序设计逻辑,相对于对程序源代码的优化,对SQL语句的优化在时间成本和风险上的代价都很低:3.SQL语句可以有不同的写法: 1 ...
- FunDA(12)- 示范:强类型数据源 - strong typed data sources
FunDA设计的主要目的是解决FRM(Functional Relation Mapping)如Slick这样的批次型操作工具库数据源行间游动操作的缺失问题.FRM产生的结果集就是一种静态集合,缺乏动 ...
- docker安装指定版本TAG的镜像
在docker中安装镜像,一般过程是,docker search 软件名称. 本文以tomcat为例,讲解下载指定版本TAG的tomcat. 搜索tomcat镜像 $ sudo docker sear ...
- NOIP2017滚粗记【下】
(续上篇) Day1: 下午,全竞赛队的人都在竞赛室颓~,再次吐槽下我校网管科的,下午普及考试又把竞赛室的网络切掉了,还好我们机制地准别了一堆单机游戏.普及组考完后,网络又恢复正常了,但晚上9点左右又 ...
- WebDriverAPI(3)
获取页面的Title属性 被测网址http:http://www.baidu.com Java语言版本的API实例代码 String url = "http://www.baidu.com& ...
- Eclipse无法编译 build无效 没有class文件
问题原因: 我遇到这个问题的原因是: maven 插件引起的,maven clean或maven build后,经常无法自动编译class(虽然project自动编译了,但是只有包文件夹名,而没有cl ...
- (转)一个MySQL 5.7 分区表性能下降的案例分析
一个MySQL 5.7 分区表性能下降的案例分析 原文:http://www.talkwithtrend.com/Article/216803 前言 希望通过本文,使MySQL5.7.18的使用者知晓 ...
- HUE配置文件hue.ini 的database模块详解(包含qlite、mysql、 psql、和oracle)(图文详解)(分HA集群和非HA集群)
不多说,直接上干货! Hue配置文件里,提及到,提供有postgresql_psycopg2, mysql, sqlite3 or oracle. 注意:Hue本身用到的是sqlite3. 在哪里呢, ...
- 简述C和C++的学习历程
总是被问到,如何学习C和C++才不茫然,才不是乱学,想了一下,这里给出一个总的回复. 一家之言,欢迎拍砖哈. 1.可以考虑先学习C. 大多数时候,我们学习语言的目的,不是为了成为一个语言专家,而是希望 ...