源码:http://download.csdn.net/detail/a924571572/9415506

一、框架效率对比

由于目前公司里面android端数据的数据量基本在千条以内,所以选择了更为灵活方便的ORMLite作为项目中的数据库模块框架并且在ORMLite框架的基础上对数据操作及后续的数据库版本更新操作进行了封装。
 
 
二、ORMLite  ARUD封装
 
1、工程项目结构
 
 
(1)bean:存放与数据表对应的实体类对象;
 
     由用户自己创建,在实体类中使用注解的形式与数据表对应起来。
 
     举例:类名上使用@DatabaseTable(tableName=””)可指定表创建时的表名;
         属性上使用@DatabaseField(columnName=””|generatedId=true|foreign=true|foreignColumnName=””)分别可指定表中字段名、该字段是否为主键、是否为外键、关联表的外键名;
 
(2)dao:存放DaoUtils工具类,返回不同表对象的操作对象,实现对数据表的增删改查等操作, 用户可直接调用,若需扩展可自行继承实现;
 
     举例:
 
    可直接在程序中通过new DaoUtils对象的方式调用,传入的参数1为SqliteOpenHelper及其子类对象,参数2为数据表对应的类对象;对不同数据表进行增删改查操作可使用数据表对应的DaoUtils对象调用增删改查方法实现;
 
(3)helper:存放DatabaseHelper 数据库操作类,
     DatabaseHelper继承自OrmLiteSqliteOpenHelper,
     封装了数据库的创建、更新、建表等数据库相关操作;
     用户使用时需继承后重写onCreate()、  onUpdate()及带参数的构造方法;
举例:
onCreate():中需调用父类的onCreate()方法完成数据库及表结构的创建;
onUpgrade():中可选择调用父类的updateNewTable()方法,在表结构需要进行较大更改时将原有数据表删除后重新添加;也可自行添加数据表字段修改的代码进行表结构的更新。
构造函数:父类需要的参数为DatabaseHelper(Context context ,String  DATABASE_NAME, CursorFactory  factory,int  DATABASE_VERSION, List<Class>  tableClass)
                  context:上下文对象    DATABASE_NAME:数据库名称
                  factory:游标工厂    DATABASE_VERSION:数据库版本号
                  tableClass:数据表对应的类对象集合
 
(4)utils:存放数据库操作工具类DatabaseUtils,用于实现数据库的备份、恢复及改变数据库文件默认存储位置三个功能。
 
2、DaoUtils类方法说明
 
 
 
三、数据库备份及恢复封装
1、操作说明:
(1)初始化DataBaseUtils类对象,需传入一个参数:Context context:当前上下文对象
     使用举例:DataBaseUtils bru= new DataBaseUtils(MainActivity.this);
(2)进行数据备份操作:调用DataBaseUtils对象的doDataBackUp(String DB_PATH, String DB_BACKUP_PATH, MessageShow ms)方法。
   
使用举例:
bru.doDataBackUp(DATABASE_PATH, DB_BACKUP_PATH,
new DataBaseUtils.MessageShow() {
@Override
public void onPepare() {
Toast.makeText(MainActivity.this, "数据库备份中!", Toast.LENGTH_LONG).show();
}
@Override
public void onSuccess() {
Toast.makeText(MainActivity.this, "数据库备份成功!", Toast.LENGTH_LONG).show();
} @Override
public void onFail() {
Toast.makeText(MainActivity.this, "数据库备份失败!", Toast.LENGTH_LONG).show();
}
});

(3)进行数据恢复操作:调用DataBaseUtils对象的doDataRecover(String DB_PATH, String DB_BACKUP_PATH, MessageShow ms)方法。

使用举例:
bru.doDataRecover(DATABASE_PATH, DB_BACKUP_PATH,
new DataBaseUtils.MessageShow() {
@Override
public void onPepare() {
Toast.makeText(MainActivity.this, "数据库恢复中!", Toast.LENGTH_LONG).show();
}
@Override
public void onSuccess() {
Toast.makeText(MainActivity.this, "数据库恢复成功!", Toast.LENGTH_LONG).show();
}
@Override
public void onFail() {
Toast.makeText(MainActivity.this, "数据库恢复失败!", Toast.LENGTH_LONG).show();
}
});
4、进行设置数据库创建位置操作:调用DataBaseUtils对象的setDatabasePath(DatabaseHelper helper,String DATABASE_PATH,int newVersionCode)方法。  
   因为ORMLite框架默认是在系统的data\data目录下创建数据库的,而实际项目中需要将数据库创建在内存卡上,以防应用卸载后数据库文件的丢失。所以添加了更改数据库创建地址的方法以满足更多操作的需要。但是更改了数据库的创建地址后,在之后的版本更新操作时需要更改此方法中的数据库版本号而不是DatabaseHelper中的版本号来实现数据库版本的升级后续操作。
使用举例:
DATABASE_PATH= Environment.getExternalStorageDirectory() + "/kktest.db"; MyDatabaseHelper helper = new MyDatabaseHelper(MainActivity.this,
DATABASE_PATH); DataBaseUtils bru=new DataBaseUtils(MainActivity.this); int dataBaseVersion=1; bru.setDatabasePath(helper, DATABASE_PATH, dataBaseVersion);
 
5、API
 
 
 
四、基于ORMLite的数据库持续更新
 
实现项目版本迭代过程中数据库结构的自动不断更新操作,满足各项目根据版本需求在数据库表中自动新增数据表、新增字段以及更改字段需求。
 
1、实现过程
背景:项目中使用ORMLite框架实现数据库相关操作;
          ORMLite框架中使用注解将每个实体类对象与数据库中数据表关联起来,类中使用注解的属性与数据表中字段对应。
           在项目中自定义数据库文件的创建地址。
          自定义数据库创建地址方法:(必须在程序启动时调用)
               在程序启动入口处的application或activity中加入以下代码:
                DataBaseUtils bru =new DataBaseUtils(MainActivity.this);
                MyDatabaseHelper helper= new MyDatabaseHelper(
                MainActivity.this,DATABASE_PATH);
                bru.setDatabasePath(helper, DATABASE_PATH,versionCode);
                指定数据库创建的位置及当前数据库版本号,当数据库版本发生变化时,需更改此处的版本号。
 
          由于在DatabaseHelper基类中重写了getWritableDatabase()、getReadableDatabase()方法,在数据库创建及更新时将不会自动调用onCreate()及onUpgrade ()方法,此时需要在程序启动时的application或activity中调用setDatabasePath方法指定数据库保存位置在此方法中实现onCreate()及onUpgrade ()方法的调用。
 
2、数据库版本更新原理
(1)、数据库初始创建
(2)当数据库进行版本升级需新增数据表或添加/修改字段 
 
3、使用说明
使用流程:
继承DatabaseHelper类,重写onCreate(),onUpgrade()方法,
(1)在onCreate()方法中调用父类createTable(ConnectionSource arg1, List<Class> tableClass)方法,创建数据表。
         ConnectionSource arg1 为数据源对象
         List<Class> tableClass为实体类对象集合
(2)在onUpdate()方法中调用父类updateTable(SQLiteDatabase database,ConnectionSource connectionSource, List<Class<T>> tableClass)方法,版本更新时,传入修改过的实体对象     集合List<Class<T>> tableClass。
         SQLiteDatabase database为数据库对象
         ConnectionSource connectionSource为数据源对象
         List<Class<T>> tableClass 为需要更新的实体对象/新增的实体对象集合
(3)在程序启动的入口处调用DataBaseUtils中的setDatabasePath(DatabaseHelper helper,String DATABASE_PATH,int newVersionCode)方法,版本更新时传入新版本号int   newVersionCode(创建时设为1)。
 
方法说明:

android ORM框架ORMLite封装的更多相关文章

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

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

  2. Android 数据库框架ormlite

    Android 数据库框架ormlite 使用精要 前言 本篇博客记录一下笔者在实际开发中使用到的一个数据库框架,这个可以让我们快速实现数据库操作,避免频繁手写sql,提高我们的开发效率,减少出错的机 ...

  3. Android数据库框架-----ORMLite 的基本用法

    ORMLite 是一款非要流行的Android平台上的数据库框架,性能优秀,代码简洁: 简述: 优点: 1.轻量级:2.使用简单,易上手:3.封装完善:4.文档全面. 缺点:1.基于反射,效率较低(本 ...

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

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

  5. 简单实用的Android ORM框架TigerDB

    TigerDB是一个简单的Android ORM框架,它能让你一句话实现数据库的增删改查,同时支持实体对象的持久化和自动映射,同时你也不必关心表结构的变化,因为它会自动检测新增字段来更新你的表结构. ...

  6. Android数据库框架-----ORMLite关联表的使用

    上一篇已经对ORMLite框架做了简单的介绍:Android数据库框架-----ORMLite 的基本用法~~本篇将介绍项目可能会使用到的一些用法,也为我们的使用ORMLite框架总结出一个较合理的用 ...

  7. Android ORM 框架之 greenDAO 使用心得

    前言 我相信,在平时的开发过程中,大家一定会或多或少地接触到 SQLite.然而在使用它时,我们往往需要做许多额外的工作,像编写 SQL 语句与解析查询结果等.所以,适用于 Android 的ORM  ...

  8. 数据库 ORM框架 ORMLite

    几个ORM框架的比较 先介绍一下ORM的概念,以前也一直听说,不过没详细了解啥意思.其全称叫做对象关系映射(Object Relation Mapping),是一种程序设计技术,用于实现面向对象编程语 ...

  9. Android ORM 框架之 greenDAO

    前言 我相信,在平时的开发过程中,大家一定会或多或少地接触到 SQLite.然而在使用它时,我们往往需要做许多额外的工作,像编写 SQL 语句与解析查询结果等.所以,适用于 Android 的ORM  ...

随机推荐

  1. SpringMVC+Mybatis+Spring整合

    Maven引入需要的JAR包 pom.xml <properties> <!-- spring版本号 --> <spring.version>4.0.2.RELEA ...

  2. .net预览功能

    1.把需要预览的文件格式转换为pdf 2.下载pdttoswf软件 3.实现预览swf功能 ok excel转pdf时会出现乱掉的问题.是excel文件的问题.调整excel文件的格式即可.

  3. 拆分SharePoint 2013 中CreatedModifiedInfo 的时间

    最近在自定义DisForm.aspx页面时 发现 创建时间信息无法进行拆分,人事MM只想要修改时间,去掉创建人,创建时间和修改人. 于是我的重新研究下在SPD里面如何去拆分这个时间. 在详情页面上找到 ...

  4. jquery 格式化日期

    function setMaxEndDate(){ var beginDate=$("#beginDate").val(); var time = new Date(beginDa ...

  5. c# applibrary实现一个Sheet表中存放多张DataTable数据

    1.工具类(applibrary.dll) public class ExcelHelper { /// <summary> /// 文件名 /// </summary> pu ...

  6. 第一个C语言程序

    从第一个C语言程序了解C语言 了解关键字 了解函数 注释 C语言的执行流程 标识符 C语言的学习重难点 从第一个C语言程序了解C语言 上图是一个在控制台上显示“Hello, World!”的C语言源代 ...

  7. javascript温故知新

    1 javascript作用域 初学javascript的时候,变量的作用域就感觉有些麻烦,他不像C#或java那样清晰明了,貌似处处都在作用域内,但有时会处处都是空. javascript中,变量的 ...

  8. sae评测报告-2013最新版

    Author:MoonXue 上线时间:2009年9月,国内最早. 支持语言:PHP.JAVA.PYTHON 版本管理:SVN 可选数据库:MySQ.KVDB(非关系型) 特色服务:Web服务器配置工 ...

  9. AndroidManifest.xml file missing!

    1.点击菜单栏中的Project——>Clean一下. 2.把AndroidManifest.xml文件再保存一下就可以了.

  10. Coding源码学习第三部分(EaseStartView.m)

    首先接上篇的要做一个NSEnumerator 类的延展阅读. 枚举(NSEnumerator) (1)依附于集合类(NSArray,NSSet,NSDictionary),没有用来创建实例的接口. ( ...