前言

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<Entity> findData(Dao<Entity, Integer> Entitydao,
int id) throws SQLException{

HashMap<String, Object> EntityMap = new HashMap<String, Object>();

userguideMap.put("id", id);

List<Entity> EntityLists = entityDao.queryForFieldValues(EntityMap);

return EntityLists ==
null
? null : EntityLists;

}

public
void
addEntity(Dao<Entity, Integer> 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<Entity, Integer> dataDao = getHelper().getDataDao();

//查找操作调用

List<Entity> simpledataList = dao.findData(dataDao, 1);

//添加操作调用

dao.addEntity(dataDao,"demotest");

} catch (SQLException
e) {

e.printStackTrace();

}

http://my.oschina.net/HandyWorkGroup/blog/77473

android数据库持久化框架, ormlite框架,的更多相关文章

  1. android数据库持久化框架

    android数据库持久化框架

  2. [BUG集] android 安卓项目中ORMLITE框架 Must specify one of id, generatedId, and generatedIdSequence with Id

    使用ORM框架ORMLITE有一段时间,今天在操作一个对象的时候,重新运行报错如下: Must specify one of id, generatedId, and generatedIdSeque ...

  3. Android 快速开发系列 ORMLite 框架最佳实践

    比较靠谱的Helper的写法: 1.DatabaseHelper package com.zhy.zhy_ormlite.db; import java.sql.SQLException; impor ...

  4. Android 快速开发系列 ORMLite 框架最佳实践之实现历史记录搜索

    首先在build.gald中添加compile 'com.j256.ormlite:ormlite-android:4.48'的引用 compile 'com.j256.ormlite:ormlite ...

  5. Android数据库框架——ORMLite轻量级的对象关系映射(ORM)Java包

    Android数据库框架--ORMLite轻量级的对象关系映射(ORM)Java包 事实上,我想写数据库的念头已经很久了,在之前写了一个答题系统的小项目那只是初步的带了一下数据库,数据库是比较强大的, ...

  6. Android数据库框架-ORMLite

    参考资料 Android ORMLite 框架的入门用法 Android 快速开发系列 ORMLite 框架最佳实践 添加依赖 compile 'com.j256.ormlite:ormlite-an ...

  7. Android ORMLite 框架的入门用法

    大家在Android项目中或多或少的都会使用数据库,为了提高我们的开发效率,当然少不了数据库ORM框架了,尤其是某些数据库操作特别频繁的app:本篇博客将详细介绍ORMLite的简易用法. 下面开始介 ...

  8. 【光速使用开源框架系列】数据库框架OrmLite

    [关于本系列] 最近看了不少开源框架,网上的资料也非常多,但是我认为了解一个框架最好的方法就是实际使用.本系列博文就是带领大家快速的上手一些常用的开源框架,体会到其作用. 由于作者水平有限,本系列只会 ...

  9. Android 数据库框架OrmLite的使用(一)

    在这里记录下最基本的用法,官网上可了解相关的介绍. 1.下载OrmLite jar 在下载android的:ormlite-android-4.48.jar和ormlite-core-4.48.jar ...

随机推荐

  1. Python基础__字符串拼接、格式化输出与复制

    上一节介绍了序列的一些基本操作类型,这一节针对字符串的拼接.格式化输出以及复制的等做做详细介绍.一. 字符串的拼接 a = 'I', b = 'love', c = 'Python'. 我们的目的是: ...

  2. 【BZOJ2946】公共串(后缀数组)

    [BZOJ2946]公共串(后缀数组) 题面 权限题... 只有CJOJ题面啦 Description 给出几个由小写字母构成的单词,求它们最长的公共子串的长度. 任务: 读入单词,计算最长公共子串的 ...

  3. AC自动机模板2(【CJOJ1435】)

    题面 Description 对,这就是裸的AC自动机. 要求:在规定时间内统计出模版字符串在文本中出现的次数. Input 第一行:模版字符串的个数N. 第2->N+1行:N个字符串.(每个模 ...

  4. Bzoj1176:Mokia&Cogs1752:[BOI2007]摩基亚Mokia

    题目 Cogs 没有Bzoj的权限号 Sol 离线,\(CDQ\)分治,把询问拆成\(4\)个,变成每次求二位前缀和 那么只要一个修改操作(关键字为时间,\(x\),\(y\))都在这个询问前,就可以 ...

  5. Java学习第一周

    第一周学习了JDK的安装和环境的配置,初步了解了Java与C的不同之处,学习了Java的变量.基本数据类型.以及面向对象的基础.并且自行完成了一些简单Java程序的编写. (1)学习了为什么使用抽象类 ...

  6. Django 2.0 学习(03):Django视图和URL(下)

    接上篇博文,继续分析Django基本流程. 编写第一个(view)视图函数 1.打开文件polls/views.py,输入下面的Python代码: from django.http import Ht ...

  7. linux的shell学习笔记

    shell脚本第一行写明解释器的路径: #!/bin/bash运行脚本两种方式:使用bash命令运行shell文件,或授予脚本文件执行权限,可直接执行文件shell启动时,一开始执行一组命令来定义提问 ...

  8. AI行业需要什么样的人才

    自AI人工智能诞生以来,它的领域逐步扩大,技术层面也越来越多样化,投身于该领域的人才也越来越多,那么AI行业到底需要什么样的人才?我们应该如何定位自己,找到适合的领域?3月8日晚,在飞马网线上直播中, ...

  9. gif文件解析

    详细资料:http://blog.csdn.net/wzy198852/article/details/17266507 MD5:98206F88B84CCC399C840C8EEC902CCF GI ...

  10. CXF-02: 使用CXF处理JavaBean式的复合类型和List集合类型

    Cat.java: package com.war3.ws.domain; public class Cat { private Integer id; private String name; pr ...