android 本地数据库持久化框架,android数据库持久化框架, ormlite框架,
前言
Android中内置了SQLite,但是对于数据库操作这块,非常的麻烦.其实可以试用第3方的数据库持久化框架对之进行结构上调整, 摆脱了访问数据库操作的细节,不用再去写复杂的SQL语句.虽然这样会在数据库操作上损失一点性能,但基于xxxx对数据库操作不频繁性能要求不高可以使用,所带来的好处即使有一个良好的统一的数据库操作以及降低代码维护成本.
适合与android的数据库持久化框架主流的有2种: androrm和ormlite.简单的对这2种框架以及SQLite在CPU:1GHz,RAM:512M的android的及其上进行插入1W条数据的性能测试,得到的结果如下: SQLite=287.488s; androrm=310.562s;ormlite=333.760s.可见使用原始的SQLite性能最高. 由于ormlite用注解字段的方式,使得在性能有着一定的损失. 不过, ormlite架构更适合java,而且类似hibernate,而androrm适合与python.
下面就对ormlite框架进行简单的介绍.
1. ormlite框架
1. 从http://ormlite.com/releases/下载对应的核心包core及android支持库.然后在项目中加入两个jar包.
2. 存储的数据对象实体
public class Entity{
@DatabaseField(generatedId = true)//自增长的主键
int id;
@DatabaseField//声明string为数据库字段
String string;
public Entity() {
//ormlite中必须要有一个无参的构造函数
}
...
}
ormlite是通过注解方式配置该类的持久化参数,其中常用参数如下:
1.表名:不指定的话表名就是类名.
@DatabaseTable(tableName="dataTableName")
2.字段:这个可以配置的属性有点多.
@DatabaseField
(1)主键:
@DatabaseField(id=true)
(2)列名: 不指定的话就是和变量名一样的
@DatabaseField(columnName="columnName")
(3) 数据类型: 这个一般情况下都不用指定,可以根据java 类获得
@DatabaseField(dataType=DataType.INTEGER)
(4) 默认值:
@DatabaseField(defaultValue="0")
(5)长度:一般用于String型
@DatabaseField(width=13)
(6) 能否为空:默认为True
@DatabaseField(canBeNull=false)
3. 需要数据DataHelper类,来创建及管理数据库. DataHelper类继承OrmLiteSqliteOpenHelper.并在覆盖实现onCreate, onUpgrade, close等方法.
@Override
public
void onCreate(SQLiteDatabase db, ConnectionSource connectionSource){
try{
Log.e(DataHelper.class.getName(),
"开始创建数据库");
TableUtils.createTable(connectionSource, Entity.class);
Log.e(DataHelper.class.getName(),
"创建数据库成功");
}catch(SQLException e){
Log.e(DataHelper.class.getName(),
"创建数据库失败", e);
}
}
@Override
public
void onUpgrade(SQLiteDatabase db, ConnectionSource connectionSource,
int arg2, int arg3){
try{
TableUtils.dropTable(connectionSource, Entity.class,
true);
onCreate(db, connectionSource);
Log.e(DataHelper.class.getName(),
"更新数据库成功");
}catch(SQLException e){
Log.e(DataHelper.class.getName(),
"更新数据库失败", e);
}
}
@Override
public
void close(){
super.close();
}
4. 需要相应的数据Dao类,即数据访问接口.
public class EntityDao{
public List findData(Dao Entitydao,
int id) throws SQLException{
HashMap EntityMap = new HashMap();
userguideMap.put("id", id);
List EntityLists = entityDao.queryForFieldValues(EntityMap);
return EntityLists == null ? null : EntityLists;
}
public
void addEntity(Dao entityDao, String string) throws SQLException{
Entity Entity =new Entity(string);
entityDao.create(Entity);
}
}
5. 调用
ormlite有两种使用方法,一种是继承对应的OrmLiteBaseActivity.但像xxxx Activity本身必须继承BaseActivity,这样就必须使用另外一种方法:在activity中添加一个获取helper的方法,还有在onDestroy中添加及时关闭helper的方法。
private DataHelper
dataHelper = null;
private DataHelper getHelper() {
if (dataHelper ==
null) {
dataHelper = OpenHelperManager.getHelper(this, DataHelper.class);
}
return
dataHelper;
}
@Override
protected
void onDestroy() {
// TODO Auto-generated method stub
super.onDestroy();
if (dataHelper !=
null) {
OpenHelperManager.releaseHelper();
dataHelper = null;
}
}
其中数据库操作实现代码如下:
EntityDao dao = new EntityDao();
try {
Dao dataDao = getHelper().getDataDao();
//查找操作调用
List simpledataList = dao.findData(dataDao, 1);
//添加操作调用
dao.addEntity(dataDao,"demotest");
} catch (SQLException
e) {
e.printStackTrace();
}
android数据库持久化框架
android数据库持久化框架
Android 快速开发系列 ORMLite 框架最佳实践
比较靠谱的Helper的写法: 1.DatabaseHelper package com.zhy.zhy_ormlite.db; import java.sql.SQLException; impor ...
Android 快速开发系列 ORMLite 框架最佳实践之实现历史记录搜索
首先在build.gald中添加compile 'com.j256.ormlite:ormlite-android:4.48'的引用 compile 'com.j256.ormlite:ormlite ...
Android数据库框架——ORMLite轻量级的对象关系映射(ORM)Java包
Android数据库框架--ORMLite轻量级的对象关系映射(ORM)Java包 事实上,我想写数据库的念头已经很久了,在之前写了一个答题系统的小项目那只是初步的带了一下数据库,数据库是比较强大的, ...
Android数据库框架-ORMLite
参考资料 Android ORMLite 框架的入门用法 Android 快速开发系列 ORMLite 框架最佳实践 添加依赖 compile 'com.j256.ormlite:ormlite-an ...
Android ORMLite 框架的入门用法
大家在Android项目中或多或少的都会使用数据库,为了提高我们的开发效率,当然少不了数据库ORM框架了,尤其是某些数据库操作特别频繁的app:本篇博客将详细介绍ORMLite的简易用法. 下面开始介 ...
【光速使用开源框架系列】数据库框架OrmLite
[关于本系列] 最近看了不少开源框架,网上的资料也非常多,但是我认为了解一个框架最好的方法就是实际使用.本系列博文就是带领大家快速的上手一些常用的开源框架,体会到其作用. 由于作者水平有限,本系列只会 ...
Android 数据库框架OrmLite的使用(一)
在这里记录下最基本的用法,官网上可了解相关的介绍. 1.下载OrmLite jar 在下载android的:ormlite-android-4.48.jar和ormlite-core-4.48.jar ...
随机推荐
iOS 杂笔-20(UIView和CALayer的区别与联系)
iOS 杂笔-20(UIView和CALayer的区别与联系) 每个 UIView 内部都有一个 CALayer 在背后提供内容的绘制和显示,并且 UIView 的尺寸样式都由内部的 Layer 所提 ...
如何成为一个C++高级程序员
C++这门语言从诞生到今天已经经历了将近30个年头.不可否认,它的学习难度都比其它语言较高.而它的学习难度,主要来自于它的复杂性.现在C++的使用范围比以前已经少了很多,java.C#.python等 ...
Android(java)学习笔记124:Android权限大全
访问登记属性 android.permission.ACCESS_CHECKIN_PROPERTIES读取或写入登记check-in数据库属性表的权限 获取错略位置 android.permissio ...
Altium Designer学习:PCB只看当前层
1 Shift+S 这个快捷键能高亮当前层,并且使其他层变成灰色,见下图: 2 隐藏指定层 在图中右下角的地方,右键,会弹出一个选项条,选择Hide Layers,可以选 ...
如何从google play下载app应用,直接下载apk
如何从google play直接下载apk by fly2004jun 2013-10-05 转载请附出处 由于某些原因,大天朝局域网访问google很多服务不能用,其中就包括google ...
WPF MediaElement播放器2
在此问个问题,MediaElement播放本地和http上的视频没问题,但是ftp的怎么在本例中播放不了 若高手了解,请不吝赐教 using System; using System.Collecti ...
git生成ssh key步骤并添加到github网站
0: 查看是否已经有了ssh密钥 执行命令:cd ~/.ssh 如果没有密钥则不会有此文件夹,有则备份删除 1:使用 Git Bash生成新的ssh key ssh-keygen -t rsa -C ...
Ocelot入门实践
博主是第一次写技术文档,一是对这两年工作以来的一些技术和经验进行整理,二也是希望能和大家多多分享交流,如有写的不对的地方望大家多多指正.进入正题 Ocelot 概念就不说了,大家自行百度,今天做一个O ...
使用不同的方法计算TF-IDF值
摘要 这篇文章主要介绍了计算TF-IDF的不同方法实现,主要有三种方法: 用gensim库来计算tfidf值 用sklearn库来计算tfidf值 用python手动实现tfidf的计算 总结 之所以 ...
初学者下载使用Python遇到的问题看它就行了
首先在python管网(www.python.org)中找到对应的版本与系统,以(window7系统64位python3.7.3为例) 打开电脑--打开浏览器--输入www.python.org--d ...
android 本地数据库持久化框架,android数据库持久化框架, ormlite框架,相关推荐
- android 本地lrc 歌词同步,android 音乐播放器-------歌词同步 lrc
lrc格式 : [al:这首歌所在的唱片集 ] [ar:歌词作者 ] [by:本LRC文件的创建者 ] [offset:+/- 以毫秒为单位整体时间戳调整,+增加,-减小 ] [re:创建此LRC文件 ...
- android本地图片转bitmap,Android中图片的网络路径转换为Bitmap格式
在Android开发中,常常会需要将一张网络图片转换为Bitmap格式,为什么这样做呢,那是因为很多函数要求的是Bitmap类型的参数,所以直接传字符串进去是不行的,这时候就需要转换一下,源码如下: ...
- android 本地html传递参数,Android WebView适配html加载本地文件并上传
写在前面 自从做Android APP产品以来,版本更迭一版接着一版,为新的业务需求一步也未曾停歇.工作开始进入一种机械化的快节奏:接触新知识,新技术领域一般都是通过网上找资料,快速入门,遇到问题解决 ...
- android本地视频封装uri,android – 从内容uri获取所拍摄视频的文件
我有一个方法如下: private String getRealPathFromUriForVideos(Uri selectedVideoUri) { String wholeID = Docume ...
- android 本地ip获取,【android】 获取本地ip方法
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 public static String getLocalhostIp() { String hostIp = null; try { Enumerati ...
- android本地图片转base64,Android Base64转图片 保存至相册
最近项目中有一个需求,获取服务端的图片Base64码转回图片后保存至相册,这么简单的事还用得着我动手吗,当然是使用ctrl c v大法了,下面看看代码: public void savePicture ...
- Android本地存储安全
Android本地存储安全 在Android应用程序中,本地存储是保存用户数据和敏感信息的常见方式.但是,由于这些信息可以被恶意应用程序或攻击者轻易地访问,所以在开发Android应用程序时需要注意本 ...
- android 监测属性值变化,Android 的系统属性(SystemProperties)分析 | Bob's Blo...
以下分析以android 4.03为基础 前言 Android的系统属性相当于windows的注册表,由key和value组成,且都是核心系统的一个基本机制.相对于windows的注册表,Androi ...
- android 本地数据库sqlite的封装
单机android sqlite数据库的实现,这个数据库可与程序一起生成在安装包中 一.下载sqlite3.exe文件 二.运行 cmd 转到sqlite3.exe 所在目录 运行 sqlite ...
最新文章
- Uva 10217 概率
- Substitution控件MethodName无法取到Session的解决办法
- React开发(255):react项目理解 ant design 注意报错提示
- 8.Using Categorical Data with One Hot Encoding
- vue和java实现页面增删改_SpringBoot-Vue实现增删改查及分页小DEMO
- Ubuntu 16.04 安装 CUDA10.1 (解决循环登陆的问题)
- 小公司如何部署实施Linux集群网站【转载】
- python开三次方_python 三次方
- Arduino连接HC05蓝牙模块
- Android本地默认IP
- A fastandrobust convolutionalneuralnetwork-based defect detection model inproductqualitycontrol-阅读笔记
- 学并发编程,透彻理解这三个核心是关键
- centos 7 下 硬盘GPT格式转换
- 卡特加特数字家庭又爆重磅合作!厦门火炬创投莅临卡特加特考察
- 分子动力学理论篇(1)——牛顿力学、哈密顿动力学和相空间
- Knime基础数据案例(1)统计数据分组
- 嵌入式Linux从入门到精通之第八节:GTK+详解
- spark解决Illegal pattern component: XXX NoSuchFieldError: KRYO_SARG_BUFFER
- c51单片机光电门测反应时间(实战小项目)
- 01005封装的优缺点
热门文章
- java argument type mismatch_解决mybatisplus插入报错argument type mismatch的问题
- APS系统的实施步骤,外行人都能看懂
- 用PS把一张图片变成素描画
- 2万字 + 50 张图,细说 JVM 内存分布、内存对齐、压缩指针
- 冰蝎下的反弹shell连接msfconsole
- 王者服务器维护公告2月,王者荣耀2.28最新维护公告 2月28日更新维护到几点
- u大师u盘装系统破解Windows开机密码
- 【信号重构】经傅里叶逆变换(IFFT)后得到实数序列-含Matlab程序
- w7提示无法关闭计算机,番茄花园windows7关闭电脑关机时提示强制关闭程序怎么办...
- IOS系统降级小工具