一:首先下载 ORMLite Jar 包

先去 ORMLite官网下载jar包 写博客时,目前最新的,对于Android为:ormlite-android-5.0.jar 和 ormlite-core-5.0.jar ; 
然后分包处理,建议如图所示分包:

二:配置Bean类
@DatabaseTable(tableName = "Book")public class MyBean {

@DatabaseField(generatedId = true)private int id;

@DatabaseField(columnName = "name")public String name;

@DatabaseField(columnName = "author")public String author;

@DatabaseField(columnName = "price")public String price;

@DatabaseField(columnName = "pages")public int pages;

public String getAuthor() {return author;}

public void setAuthor(String author) {this.author = author;}

public String getPrice() {return price;}

public void setPrice(String price) {this.price = price;}

public int getPages() {return pages;}

public void setPages(int pages) {this.pages = pages;}

public String getName() {return name;}

public void setName(String name) {this.name = name;}
}
三:编写Helper类
public class MyDatabaseHelper extends OrmLiteSqliteOpenHelper {

public static final String DB_NAME = "BookStore.db";public static final int DB_VERSION = 1;

public MyDatabaseHelper(Context context) {super(context, DB_NAME, null, DB_VERSION);}

@Overridepublic void onCreate(SQLiteDatabase sqLiteDatabase, ConnectionSource connectionSource) {try {TableUtils.createTable(connectionSource, MyBean.class);} catch (SQLException e) {e.printStackTrace();}}

@Overridepublic void onUpgrade(SQLiteDatabase sqLiteDatabase, ConnectionSource connectionSource, int oldVersion, int newVersion) {System.out.println("MyDatabaseHelper.onUpgrade oldVersion=" + oldVersion + "  newVersion=" + newVersion);try {

switch (oldVersion) {case 1:getDao(MyBean.class).executeRaw("alter table Book add column book_type varchar(20)");//在数据库版本1的下一版本,Book表中新添加了 book_type 字段

case 2:// TableUtils.createTable(connectionSource, MyBean2.class);//在数据库版本2的下一版本,新增加了一张表default:break;}

//显然这样处理比较暴力//TableUtils.dropTable(connectionSource, MyBean.class, true);//onCreate(sqLiteDatabase, connectionSource);} catch (SQLException e) {e.printStackTrace();}}

private static MyDatabaseHelper instance;

/*** 单例获取该Helper** @param context* @return*/public static MyDatabaseHelper getHelper(Context context) {if (instance == null) {synchronized (MyDatabaseHelper.class) {if (instance == null)instance = new MyDatabaseHelper(context);}}return instance;}

private Map<String, Dao> daos = new HashMap<>();

public synchronized Dao getDao(Class clazz) throws SQLException {Dao dao = null;String className = clazz.getSimpleName();if (daos.containsKey(className)) {dao = daos.get(clazz);}if (dao == null) {dao = super.getDao(clazz);daos.put(className, dao);}return dao;}

@Overridepublic void close() {super.close();for (String key : daos.keySet()) {Dao dao = daos.get(key);dao = null;}}

}
四:编写DAO类
1:接口编写:
public interface MyDataImpl {

void insert(ArrayList<MyBean> beanArrayList);

void insert(MyBean myBean);

void update(String name, String price);

void update2(String columnName, String columnValue);

void update3(String queryColumnName, String queryColumnValue, String setColumnName, String setColumnValue);

void delete(String name);

int deleteAll();

ArrayList<String> queryPrice(String name);

String queryAuthor(String name, String price);

long queryCount();

ArrayList<MyBean> queryId(int id);

ArrayList<MyBean> queryAll();

}
public class MyDataDao implements MyDataImpl {private MyDatabaseHelper mHelper;private Dao<MyBean, Integer> dao;private Context mContext;private static MyDataDao instance;

protected MyDataDao(Context context) {this.mContext = context;try {mHelper = MyDatabaseHelper.getHelper(mContext);dao = mHelper.getDao(MyBean.class);} catch (SQLException e) {e.printStackTrace();}}

public static MyDataDao getInstance(Context context) {if (instance == null) {synchronized (MyDataDao.class) {if (instance == null) {instance = new MyDataDao(context);}}

}return instance;}

@Overridepublic void insert(MyBean myBean) {

try {

//事务操作/* TransactionManager.callInTransaction(mHelper.getConnectionSource(), new Callable<Void>() {@Overridepublic Void call() throws Exception {return null;}});*/

dao.create(myBean);//dao.createOrUpdate(myBean);//和上一行的方法效果一样} catch (SQLException e) {e.printStackTrace();}}

@Overridepublic void insert(ArrayList<MyBean> beanArrayList) {try {dao.create(beanArrayList);} catch (SQLException e) {e.printStackTrace();}}

@Overridepublic void update(String name, String price) {ArrayList<MyBean> list = null;try {list = (ArrayList<MyBean>) dao.queryForEq("name", name);if (list != null) {for (MyBean bean : list) {bean.setPrice(price);dao.update(bean);//dao.createOrUpdate(bean);//和上一行的方法效果一样}

}} catch (SQLException e) {e.printStackTrace();}}

@Overridepublic void update2(String columnName, String columnValue) {try {//下面这两个代码的意思一样dao.updateBuilder().updateColumnValue(columnName, columnValue).update();//dao.updateRaw("update Book set " + columnName + "=?", new String[]{columnValue});} catch (SQLException e) {e.printStackTrace();}

}

@Overridepublic void update3(String queryColumnName, String queryColumnValue, String setColumnName, String setColumnValue) {try {String sql = "update Book set " + setColumnName + "= '" + setColumnValue + "' where " + queryColumnName + "= '" + queryColumnValue + "'";System.out.println("MyDataDao.update3 sql=" + sql);dao.updateRaw(sql);

//dao.updateRaw("update Book set price= '33333元' where name= '西游记'");//等价于上面的写法} catch (SQLException e) {e.printStackTrace();}}

@Overridepublic void delete(String name) {ArrayList<MyBean> list = null;try {list = (ArrayList<MyBean>) dao.queryForEq("name", name);if (list != null) {for (MyBean bean : list) {dao.delete(bean);}}} catch (SQLException e) {e.printStackTrace();}}

/*** @return -1:删除数据异常  0:无数据*/@Overridepublic int deleteAll() {int number = -1;try {number = dao.deleteBuilder().delete();//返回删除的数据条数  例如:删除1条数据,返回1,依次类推。

//dao.deleteBuilder().where().eq("name", "记").reset();//????} catch (SQLException e) {e.printStackTrace();}return number;}

@Overridepublic ArrayList<String> queryPrice(String name) {List<MyBean> list = null;ArrayList<String> strings = null;try {list = dao.queryForEq("name", name);if (list != null) {strings = new ArrayList<>();for (MyBean myBean : list) {strings.add(myBean.getPrice());}/*for (int i = 0; i < list.size(); i++) {strings.add(list.get(i).getPrice());}*/}} catch (SQLException e) {e.printStackTrace();}return strings;}

@Overridepublic String queryAuthor(String name1, String price1) {List<MyBean> list = null;String author = "";

try {list = dao.queryBuilder().where().eq("name", name1).and().eq("price", price1).query();//上述相当与:select * from Book where name = name1 and price = price1 ;if (list != null) {for (MyBean myBean : list) {author = myBean.getAuthor();}}} catch (SQLException e) {e.printStackTrace();}

return author;//说明:如果这个 author 是唯一的,可以这样的返回。如果是多个的话,要返回一个ArrayList<String> 类型}

/*** @return 表中数据的个数*/@Overridepublic long queryCount() {long number = 0;try {number = dao.queryBuilder().countOf();} catch (SQLException e) {e.printStackTrace();}return number;}

/*** @param id 这个id 就是表中,每次插入数据,自己递增的id 字段*/@Overridepublic ArrayList<MyBean> queryId(int id) {ArrayList<MyBean> list = null;

try {MyBean myBean = dao.queryForId(id);if (myBean != null) {list = new ArrayList<>();list.add(myBean);}return list;} catch (SQLException e) {e.printStackTrace();}return list;}

@Overridepublic ArrayList<MyBean> queryAll() {ArrayList<MyBean> list = null;try {list = (ArrayList<MyBean>) dao.queryForAll();

if (list != null) {return list;}} catch (SQLException e) {e.printStackTrace();}return list;}

public boolean delteTables(Context context, String DBname) {//?????return false;}

/*** 这个方法可以的*/public boolean delteDatabases(Context context, String DBname) {return context.deleteDatabase(DBname);}

}
五:测试
源码下载地址
参考文章:
● Android快速开发–使用ORMLite操作数据库
●  鸿洋的博客:
●  Android ORMLite 框架的入门用法
●  Android 快速开发系列 ORMLite 框架最佳实践
●  SQL 语法
●  SQL UPDATE 语句
●  OrmLite 官网
原文发布时间为:2018-10-5
本文来自云栖社区合作伙伴“Android开发中文站”,了解相关信息可以关注“Android开发中文站”。

ORMLite框架 的使用方法---给你的数据库操作插上翅膀相关推荐

  1. android ormlite框架,ORMLite框架 的使用方法—给你的数据库操作插上翅膀

    一:首先下载 ORMLite Jar 包 先去 ORMLite官网下载jar包 写博客时,目前最新的,对于Android为:ormlite-android-5.0.jar 和 ormlite-core ...

  2. python操作数据库的几种方法_python对mysql数据库操作的三种不同方式

    原标题:python对mysql数据库操作的三种不同方式 |转载自:博客园 |原文链接:http://www.cnblogs.com/mryrs/p/6951008.html 先要说一下,在这个暑期如 ...

  3. CI框架的使用-原生SQL和ORM模式操作数据库、视图

    一  数据库配置文件的配置和自动加载 1 直接修改config文件夹下面的database.php,把数据库相关信息填上去即可 $db['default'] = array('dsn' => ' ...

  4. 笔记本连网线显示服务器拒绝连接怎么办,笔记本插上网线没反应怎么办【解决方法】...

    电脑是我们生活和工作中不可缺少的,而电脑的工作还是依靠于网络,如果没有网络的话,电脑也是起不到什么作用的,而使用电脑的朋友都会遇到一些问题,而最常见的问题就是插上 网线 之后,电脑上不了网.不管如果怎 ...

  5. Android ORMLite 框架的入门用法

    转载请标明出处:http://blog.csdn.net/lmj623565791/article/details/39121377 大家在Android项目中或多或少的都会使用数据库,为了提高我们的 ...

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

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

  7. android ormlite框架,Android ORMLite 框架的入门用法

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

  8. OrmLite框架 —— OrmLite 入门使用(一)

    注:本片文章参考于http://blog.csdn.net/industriously/article/details/50790624 OrmLite 三篇文章 OrmLite框架 -- OrmLi ...

  9. 安卓学习 Day24:ORMLite框架

    文章目录 一.ORM概述 二.类与表的对应关系 三.案例演示 1.创建安卓应用 2.导入ORMLite的依赖 3.创建与person表对应的实体类 - Person (1)创建Person类 (2)定 ...

最新文章

  1. 基于c语言优先级病房呼叫_C语言
  2. BK资本管理公司创始人阐述BCH接下来的三种“催化剂”
  3. 封装php连接数据库返回方法
  4. QT中个数据类型的转换
  5. Centos root权限的变化
  6. Storm编程入门API系列之Storm的可靠性的ACK消息确认机制
  7. 使用Akka处理1000万条消息
  8. 几个小时后,我学数据库,找到一些代码
  9. 简单工厂模式和策略模式的区别
  10. cat3 utp是不是网线_CAT网线知识
  11. RISV-Reader小结
  12. 小米 2015 北京 研发面试
  13. 电脑维修中的十个笑话
  14. 【正则表达式】去除首尾空格
  15. 如何快速推广个人微信公众号?
  16. 大创项目前传——爬虫阶段(1)
  17. leetcode面试题 804. 唯一摩尔斯密码词
  18. 【数据库原理与应用 - 第六章】T-SQL 在SQL Server的使用
  19. 基于RSA的t-out-of-n OT协议
  20. 查看linux进程超时,Linux,在子进程上超时(Linux, timing out on subprocess)

热门文章

  1. apue 2013-03-16
  2. PHP 4 中对象的比较
  3. 扩展方法的定义及使用
  4. VS2008 安装盘的问题
  5. 编程游戏python我的世界_乐学Python编程-做个游戏很简单
  6. JavaSE(十二)——AWT
  7. 计算机视觉与深度学习 | 视觉里程计库Libviso2详解
  8. 毕业论文 | 单相AC-DC变换电路(附源代码与电路设计图及器件清单)电子设计大赛
  9. SVN服务器部署并实现双机同步及禁止普通用户删除文件
  10. 查看网口命令_20个常用Linux命令