一般的项目中,Android自身提供的SQLite数据库,可以满足轻量级的数据存储应用,但是,只要是存储模型稍微复杂的项目,以及数据结构模型复杂的应用,就很难再用SQLite支撑整个项目的数据存储。何况,使用SQLite编写的代码,代码后续维护和管理不容易,所以,上规模的项目中,很有必要引入一种更好用、对开发者更友好的第三方ORM数据库框架:ORMlite。
ORMLite官方的简介说:“Object Relational Mapping Lite (ORM Lite) provides some simple, lightweight functionality for persisting Java objects to SQL databases while avoiding the complexity and overhead of more standard ORM packages.”。
ORMLite是对象关系映射(Object Relational Mapping)数据库的一种轻量级SQL数据库的开发包(packages)。提供简单易用的DAO。
ORMLite官方主页:http://ormlite.com
Java语言编写,支持Java,Android平台,本文重点介绍如何在Android平台的应用开发中使用ORMLite。
在Android应用开发中使用ORMLite,首先要下载ORMLite的开发jar包,jar资源包下载主页:http://ormlite.com/releases
具体到Android,需要在 http://ormlite.com/releases 页面下载两个jar 包(本文基于ORMLite的版本是:ormlite 4.49-SNAPSHOT):
(1)core列表下的jar包;
(2)android列表下的jar包。
如图所示:

将上面的两个jar包下载后放到Android工程项目中的libs包中,如图所示:

以上完成后,ORMLite开发环境搭建就完成了,接下来就可以使用了。

首先需要创建和定义一张ORMLite用以存储的数据库表,这个表,用Java的一个类实现,例如User.java:

package zhangphil.ormlitetest.database;import com.j256.ormlite.field.DatabaseField;
import com.j256.ormlite.table.DatabaseTable;@DatabaseTable(tableName = "users")
public class User {public final static String USER_ID = "user_id";public final static String NAME = "name";public final static String AGE = "age";public User() {}public User(String name, int age) {this.name = name;this.age = age;}// @DatabaseField(generatedId = true)// public int id;@DatabaseField(id = true, columnName = USER_ID)public int user_id;@DatabaseField(columnName = NAME)public String name;@DatabaseField(columnName = AGE)public int age;public int getUserId() {return user_id;}public void setUserId(int uid) {this.user_id = uid;}public String getName() {return name;}public void setName(String name) {this.name = name;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}@Overridepublic String toString() {return "user_id:" + user_id + " 姓名:" + name + " 年龄:" + age;}
}

上面的这个Java类User中开始一段代码:

@DatabaseTable(tableName = "users")

此代码声明了User类中定义的数据模型,将存储在数据库表“users”中。换句话说,数据库表users中,存储的数据单元也即是类User中定义的数据模型。
其中:

@DatabaseField(columnName = “xxx”)

xxx 表示此数据字段在数据库表中的列名。

DatabaseField中,若设定id=true,则声明此id为主键。

ORMLite的数据库表定义可设置的参数比较多,这点可以参考官方文档。剩余的就是创建ORMLite数据库,和SQLite类似。ORMLite查插删改主要通过DAO。
现在给出一个简单的代码加以说:
定义一个ORMLite数据库表User.java,假设该User表存储用户的id、名字、年龄信息:

package zhangphil.ormlitetest.database;import com.j256.ormlite.field.DatabaseField;
import com.j256.ormlite.table.DatabaseTable;@DatabaseTable(tableName = "users")
public class User {public final static String USER_ID = "user_id";public final static String NAME = "name";public final static String AGE = "age";public User() {}public User(String name, int age) {this.name = name;this.age = age;}// @DatabaseField(generatedId = true)// public int id;@DatabaseField(id = true, columnName = USER_ID)public int user_id;@DatabaseField(columnName = NAME)public String name;@DatabaseField(columnName = AGE)public int age;public int getUserId() {return user_id;}public void setUserId(int uid) {this.user_id = uid;}public String getName() {return name;}public void setName(String name) {this.name = name;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}@Overridepublic String toString() {return "user_id:" + user_id + " 姓名:" + name + " 年龄:" + age;}
}

创建ORMLite数据库管理工具类ORMLiteDatabaseHelper.java:

package zhangphil.ormlitetest.database;import java.sql.SQLException;import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteDatabase.CursorFactory;
import android.util.Log;import com.j256.ormlite.android.apptools.OrmLiteSqliteOpenHelper;
import com.j256.ormlite.dao.Dao;
import com.j256.ormlite.support.ConnectionSource;
import com.j256.ormlite.table.TableUtils;public class ORMLiteDatabaseHelper extends OrmLiteSqliteOpenHelper {private static ORMLiteDatabaseHelper mDatabaseHelper = null;private Dao<User, Integer> mUserDao = null;private final static String DataBase_NAME = "ormlite.db";private final static int DataBase_VERSION = 1;public ORMLiteDatabaseHelper(Context context, String databaseName,CursorFactory factory, int databaseVersion) {super(context, DataBase_NAME, factory, DataBase_VERSION);}public static ORMLiteDatabaseHelper getInstance(Context context) {if (mDatabaseHelper == null) {mDatabaseHelper = new ORMLiteDatabaseHelper(context, DataBase_NAME,null, DataBase_VERSION);}return mDatabaseHelper;}@Overridepublic void onCreate(SQLiteDatabase arg0, ConnectionSource connectionSource) {Log.d(this.getClass().getName(), "ORMLite数据库 -> onCreate");try {TableUtils.createTableIfNotExists(connectionSource, User.class);} catch (Exception e) {e.printStackTrace();}}@Overridepublic void onUpgrade(SQLiteDatabase database, ConnectionSource arg1,int arg2, int arg3) {Log.i(this.getClass().getName(), "数据库 -> onUpgrade");try {// 删除旧的数据库表。TableUtils.dropTable(connectionSource, User.class, true);// 重新创建新版的数据库。onCreate(database, connectionSource);} catch (SQLException e) {e.printStackTrace();}}/*** 每一个数据库中的表,要有一个获得Dao的方法。 可以使用一种更通用的模板方法如:* * public Dao<Class, Integer> getORMLiteDao(Class cls) throws SQLException {* if (dao == null) { dao = getDao(cls); }* * return dao; }*/public Dao<User, Integer> getUserDao() {if (mUserDao == null) {try {mUserDao = getDao(User.class);} catch (java.sql.SQLException e) {e.printStackTrace();}}return mUserDao;}@Overridepublic void close() {super.close();mUserDao = null;}
}

然后就可以在自己的应用中直接使用:

package zhangphil.ormlitetest;import java.sql.SQLException;
import java.util.List;
import java.util.Random;import com.j256.ormlite.dao.Dao;import zhangphil.ormlitetest.database.ORMLiteDatabaseHelper;
import zhangphil.ormlitetest.database.User;
import android.support.v7.app.ActionBarActivity;
import android.widget.Toast;
import android.os.Bundle;public class MainActivity extends ActionBarActivity {private Dao<User, Integer> mUserDao;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);ORMLiteDatabaseHelper mDatabaseHelper = ORMLiteDatabaseHelper.getInstance(this);mUserDao = mDatabaseHelper.getUserDao();Random rand = new Random();for (int i = 0; i < 3; i++) {User user = new User();user.setUserId(i);user.setName("name" + i);// 生成随机测试的年龄。user.setAge(rand.nextInt(100));try {mUserDao.createOrUpdate(user);} catch (SQLException e) {e.printStackTrace();}}}@Overridepublic void onStart() {super.onStart();// 全局查询try {List<User> users = mUserDao.queryForAll();for (User u : users) {Toast.makeText(this, u.toString(), Toast.LENGTH_SHORT).show();}} catch (SQLException e) {e.printStackTrace();}// 条件查询QueryBuilder// 假设我们给定一个用户的id=1int uid = 1;try {List<User> users = mUserDao.queryBuilder().where().eq(User.USER_ID, uid).query();for (User u : users) {Toast.makeText(this, "查询结果 : " + u.toString(),Toast.LENGTH_SHORT).show();}} catch (SQLException e) {e.printStackTrace();}}
}

Android ORMLite数据库简介相关推荐

  1. android面向数据库的的编程工具-OrmLite

    数据库操作框架OrmLite ORMlite是类似hibernate的对象映射框架,主要面向java语言,同时,是时下最流行的android面向数据库的的编程工具. 对象关系映射(Object Rel ...

  2. Android 系统(171)---OrmLite数据库框架,Picasso框架,Okio框架,OKHttp框架

    OrmLite数据库框架,Picasso框架,Okio框架,OKHttp框架 OrmLite基础知识 什么是OrmLite框架,在我没用这个框架时,不知道它有多好,用了才知道很方便哦,为了提供开发效率 ...

  3. android 本地数据库持久化框架,android数据库持久化框架, ormlite框架,

    前言 Android中内置了SQLite,但是对于数据库操作这块,非常的麻烦.其实可以试用第3方的数据库持久化框架对之进行结构上调整, 摆脱了访问数据库操作的细节,不用再去写复杂的SQL语句.虽然这样 ...

  4. Android使用OrmLite数据库框架 之 基本用法

    官网:http://ormlite.com/ 官方帮助,目录: http://ormlite.com/javadoc/ormlite-core/doc-files/ormlite_toc.html#S ...

  5. 【Android】在Android上使用OrmLite数据库框架 之 基本用法

    转载自:http://blog.csdn.net/oo8_8oo/article/details/7302156 官网:http://ormlite.com/ 官方帮助,目录: http://orml ...

  6. android ormlite框架的理解,Android ORMLite框架入门级介绍

    以前使用数据库都是使用Android官方推荐的SQLiteOpenHelper,用过的都知道,比较难用.一直想找一个比较好用的数据库框架,直到我遇到了ORMLite框架~ 这里写了一个小Demo抛砖引 ...

  7. android SQLite数据库的使用

    今天,简单讲讲android如何使用SQLite数据库.  最近,自己在做一个功能时又用到了SQLite数据库,发现自己还是掌握的不很全面.其实之前的app里面也一直用到了数据库,但是自己没有花时 ...

  8. 六款值得推荐的Android开源框架简介

    六款值得推荐的Android开源框架简介 技术不再多,知道一些常用的.不错的就够了.下面就是最近整理的"性价比"比较高的Android开源框架,应该是相对实用的. 1.volley ...

  9. ORMLite 数据库的使用--二次封装

    ORMLite 数据库封装的使用 最近在做一个市政抄表机,录入用户水汽表数据到DB里面的,这个封装是同事封装的,封装的很好,文档也很详细,所以计入一下.方便下次使用. 推荐使用GreenDao3.2: ...

最新文章

  1. 设计模式之解释器模式、例子分析
  2. 杀毒软件引起的WinCE编译出错问题
  3. Objective-C iOS纯代码布局 一堆代码可以放这里!
  4. Activiti数据库
  5. 计算机网络的功能分布计算,网络中心的分布计算(转帖)
  6. Go语言中的结构体 (struct)
  7. 打开和禁用IPV6的方法
  8. lighttpd,nginx,apache的性能负载比较
  9. OfficeScan5.58升级到7.38
  10. word-插入数学公式(mathtype)
  11. 什么是token以及token的原理
  12. 【镜像取证篇】VMware虚拟机配置文件取证
  13. android4.0root,最强大一键ROOT 轻松搞定安卓4.0
  14. 【Lua基础系列】之热更新
  15. Swagger3/thinkphp6教程
  16. 《学习笔记》面向对象(四)多态,instanceof关键字,抽象
  17. 抖音上几百万粉丝的能有什么用?
  18. CentOS8 安装 Docker repo ‘appstream‘ 下载元数据失败
  19. Kaggle时间序列(Time Series)教程 6-使用机器学习预测(forecasting-with-machine-learning)
  20. 一些时间的概念与区分(UTC、GMT、LT、TAI等)

热门文章

  1. 解决英伟达登录的人机验证无法加载的问题,Validator failed to load,please check your browsersettings,such as ad blockers.
  2. Serverless 在大厂用到什么程度了?
  3. 共识与拜占庭将军问题
  4. 干货分享--社群促活的12种方式
  5. matlab 图像的保存
  6. HP惠普暗影精灵6 OMEN笔记本电脑-15-en0007ax原厂Win10系统镜像,原装OEM系统,恢复出厂状态
  7. 我的天才女友第三季(离开的,留下的)
  8. 关于我学习css的感悟和心得
  9. 全球最神秘的5大黑客组织,其中有一个是中国人
  10. 哈哈,开博啦!!!!