android ormlite框架,ORMLite框架 的使用方法—给你的数据库操作插上翅膀
一:首先下载 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);
}
@Override
public void onCreate(SQLiteDatabase sqLiteDatabase, ConnectionSource connectionSource) {
try {
TableUtils.createTable(connectionSource, MyBean.class);
} catch (SQLException e) {
e.printStackTrace();
}
}
@Override
public 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 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;
}
@Override
public void close() {
super.close();
for (String key : daos.keySet()) {
Dao dao = daos.get(key);
dao = null;
}
}
}
四:编写DAO类
1:接口编写:
public interface MyDataImpl {
void insert(ArrayList 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 queryPrice(String name);
String queryAuthor(String name, String price);
long queryCount();
ArrayList queryId(int id);
ArrayList queryAll();
}
public class MyDataDao implements MyDataImpl {
private MyDatabaseHelper mHelper;
private Dao 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;
}
@Override
public void insert(MyBean myBean) {
try {
//事务操作
/* TransactionManager.callInTransaction(mHelper.getConnectionSource(), new Callable() {
@Override
public Void call() throws Exception {
return null;
}
});*/
dao.create(myBean);
//dao.createOrUpdate(myBean);//和上一行的方法效果一样
} catch (SQLException e) {
e.printStackTrace();
}
}
@Override
public void insert(ArrayList beanArrayList) {
try {
dao.create(beanArrayList);
} catch (SQLException e) {
e.printStackTrace();
}
}
@Override
public void update(String name, String price) {
ArrayList list = null;
try {
list = (ArrayList) 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();
}
}
@Override
public 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();
}
}
@Override
public 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();
}
}
@Override
public void delete(String name) {
ArrayList list = null;
try {
list = (ArrayList) dao.queryForEq("name", name);
if (list != null) {
for (MyBean bean : list) {
dao.delete(bean);
}
}
} catch (SQLException e) {
e.printStackTrace();
}
}
/**
* @return -1:删除数据异常 0:无数据
*/
@Override
public 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;
}
@Override
public ArrayList queryPrice(String name) {
List list = null;
ArrayList 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;
}
@Override
public String queryAuthor(String name1, String price1) {
List 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 类型
}
/**
* @return 表中数据的个数
*/
@Override
public long queryCount() {
long number = 0;
try {
number = dao.queryBuilder().countOf();
} catch (SQLException e) {
e.printStackTrace();
}
return number;
}
/**
* @param id 这个id 就是表中,每次插入数据,自己递增的id 字段
*/
@Override
public ArrayList queryId(int id) {
ArrayList 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;
}
@Override
public ArrayList queryAll() {
ArrayList list = null;
try {
list = (ArrayList) 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框架,ORMLite框架 的使用方法—给你的数据库操作插上翅膀相关推荐
- ORMLite框架 的使用方法---给你的数据库操作插上翅膀
一:首先下载 ORMLite Jar 包 先去 ORMLite官网下载jar包 写博客时,目前最新的,对于Android为:ormlite-android-5.0.jar 和 ormlite-core ...
- python操作数据库的几种方法_python对mysql数据库操作的三种不同方式
原标题:python对mysql数据库操作的三种不同方式 |转载自:博客园 |原文链接:http://www.cnblogs.com/mryrs/p/6951008.html 先要说一下,在这个暑期如 ...
- Android在未root手机获取应用内置的SQLite数据库到电脑上处理的方法(数据库备份与恢复-支持SDK30+)
在android中我们常用sqlite数据库来存放文件,在开发中我们可能需要查看数据库中的所有的数据,以保证数据的准确性.在已经root的手机下,我们可以进入 data/data/包名/databas ...
- rust的actix web框架试试手(json数据传输和接受,数据库操作,rust后端操作)
文章目录 ##Actix Web(RUST) ###代码 main.rs <!DOCTYPE html> <html lang="en"> <head ...
- 【Android】eclipse 实现登录、注册、修改密码、数据库操作
该项目参考:https://blog.csdn.net/midnight_time/article/details/91203973 目录 登录.注册.修改密码功能的实现 一.UI的设计 二.实现功能 ...
- 笔记本连网线显示服务器拒绝连接怎么办,笔记本插上网线没反应怎么办【解决方法】...
电脑是我们生活和工作中不可缺少的,而电脑的工作还是依靠于网络,如果没有网络的话,电脑也是起不到什么作用的,而使用电脑的朋友都会遇到一些问题,而最常见的问题就是插上 网线 之后,电脑上不了网.不管如果怎 ...
- Android 数据库框架ormlite 使用精要
Android 数据库框架ormlite 使用精要 前言 本篇博客记录一下笔者在实际开发中使用到的一个数据库框架,这个可以让我们快速实现数据库操作,避免频繁手写sql,提高我们的开发效率,减少出错的机 ...
- Android数据库框架-----ORMLite 的基本用法
ORMLite 是一款非要流行的Android平台上的数据库框架,性能优秀,代码简洁: 简述: 优点: 1.轻量级:2.使用简单,易上手:3.封装完善:4.文档全面. 缺点:1.基于反射,效率较低(本 ...
- android对象关系映射框架ormlite之一对多(OneToMany)
前两天,用ormlite对单张表进行了基本的操作,但是,我们知道通常情况对于单张表格进行操作在实际情况中很前两天不现实,那么ormlite能否像Hibenate那样实现多张表之间的一对多,多对多(即O ...
最新文章
- oracle没什么没有备份,怎么恢复没有备份的Oracle数据库
- php rule engine,jinchunguang
- 删除docker-register的镜像 none无效镜像讲解
- python防反编译_Python - 浅谈Python的编译与反编译
- ​OpenVAS漏洞扫描基础教程之创建用户组与创建角色
- 【机器学习入门笔记0:OpenCV+TensorFlow学习内容(目录)】20190122
- 【NLP】文本生成?还不快上知识库
- Cocos2D-X2.2.3学习笔记5(UI系统)
- Flutter+Serverless端到端研发架构实践
- 21 SD配置-主数据-客户账户组分配编号范围
- Kubernetes-Service服务(十一)
- 摄影灵感|轮廓趋势,剪影以一种主要的方式回来了。
- MyApplicationToast工具类
- IJCAI阿里论文 | JUMP: 一种点击和停留时长的协同预估器...
- 吸烟首先危害是会引起火灾,电子烟较好
- android小米4c 权限,小米4C root教程_小米4C卡刷获取root权限的方法
- 音乐流媒体服务器Gonic
- 【Android TV】 遥控器Enter键无法调出软键盘
- 【gloomyfish】数据分析之 – 离群值(Outliers) BoxPlot
- python语言编程培训班价值有多大?