Android 使用com.j256.ormlite
在web开发中经常采用的hibernate,在android也提供了一个ormlite
导入所需jar包后
/**
* SQLiteHelperOrm.java
* 版权所有(C) 2014
* 创建者:cuiran 2014-2-12 下午3:18:40
*/
package com.ghyf.mplay.database;
import java.sql.SQLException;
import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import com.ghyf.mplay.application.BaseCookie;
import com.ghyf.mplay.po.POPriorityText;
import com.ghyf.mplay.po.POTest;
import com.ghyf.mplay.util.LogUtil;
import com.j256.ormlite.android.apptools.OrmLiteSqliteOpenHelper;
import com.j256.ormlite.support.ConnectionSource;
import com.j256.ormlite.table.TableUtils;
/**
* TODO
* @author cuiran
* @version 1.0.0
*/
public class SQLiteHelperOrm extends OrmLiteSqliteOpenHelper {
private static final String TAG="SQLiteHelperOrm";
private static final String DATABASE_NAME = "mplay.db";
private static final int DATABASE_VERSION = 3;
public SQLiteHelperOrm(Context context) {
super(context, DATABASE_NAME, null, DATABASE_VERSION);
}
public SQLiteHelperOrm() {
super(BaseCookie.getContext(), DATABASE_NAME, null, DATABASE_VERSION);
}
@Override
public void onCreate(SQLiteDatabase db, ConnectionSource connectionSource) {
try {
TableUtils.createTable(connectionSource, POTest.class);
TableUtils.createTable(connectionSource, POPriorityText.class);
} catch (SQLException e) {
LogUtil.e(TAG,"onCreate",e);
}
}
@Override
public void onUpgrade(SQLiteDatabase db, ConnectionSource connectionSource, int arg2, int arg3) {
try {
TableUtils.dropTable(connectionSource, POTest.class, true);
TableUtils.dropTable(connectionSource, POPriorityText.class, true);
onCreate(db, connectionSource);
} catch (SQLException e) {
LogUtil.e(TAG,"onUpgrade",e);
}
}
}
/**
* DbHelper.java
* 版权所有(C) 2014
* 创建者:cuiran 2014-2-12 下午3:37:07
*/
package com.ghyf.mplay.database;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import android.annotation.TargetApi;
import android.content.ContentValues;
import android.os.Build;
import com.ghyf.mplay.util.LogUtil;
import com.j256.ormlite.dao.Dao;
import com.j256.ormlite.stmt.UpdateBuilder;
/**
* DbHelper 数据库操作类
* @author cuiran
* @version 1.0.0
*/
public class DbHelper<T> {
private static final String TAG="DbHelper";
/** 新增一条记录 */
public int create(T po) {
SQLiteHelperOrm db = new SQLiteHelperOrm();
try {
Dao dao = db.getDao(po.getClass());
return dao.create(po);
} catch (SQLException e) {
LogUtil.e(TAG,"create",e);
} finally {
if (db != null)
db.close();
}
return -1;
}
public boolean exists(T po, Map<String, Object> where) {
SQLiteHelperOrm db = new SQLiteHelperOrm();
try {
Dao dao = db.getDao(po.getClass());
if (dao.queryForFieldValues(where).size() > 0) {
return true;
}
} catch (SQLException e) {
LogUtil.e(TAG,"exists",e);
} finally {
if (db != null)
db.close();
}
return false;
}
public int createIfNotExists(T po, Map<String, Object> where) {
SQLiteHelperOrm db = new SQLiteHelperOrm();
try {
Dao dao = db.getDao(po.getClass());
if (dao.queryForFieldValues(where).size() < 1) {
return dao.create(po);
}
} catch (SQLException e) {
LogUtil.e(TAG,"createIfNotExists",e);
} finally {
if (db != null)
db.close();
}
return -1;
}
/** 查询一条记录 */
public List<T> queryForEq(Class<T> c, String fieldName, Object value) {
SQLiteHelperOrm db = new SQLiteHelperOrm();
try {
Dao dao = db.getDao(c);
return dao.queryForEq(fieldName, value);
} catch (SQLException e) {
LogUtil.e(TAG,"queryForEq",e);
} finally {
if (db != null)
db.close();
}
return new ArrayList<T>();
}
/** 删除一条记录 */
public int remove(T po) {
SQLiteHelperOrm db = new SQLiteHelperOrm();
try {
Dao dao = db.getDao(po.getClass());
return dao.delete(po);
} catch (SQLException e) {
LogUtil.e(TAG,"remove",e);
} finally {
if (db != null)
db.close();
}
return -1;
}
/**
* 根据特定条件更新特定字段
*
* @param c
* @param values
* @param columnName where字段
* @param value where值
* @return
*/
@TargetApi(Build.VERSION_CODES.HONEYCOMB)
public int update(Class<T> c, ContentValues values, String columnName, Object value) {
SQLiteHelperOrm db = new SQLiteHelperOrm();
try {
Dao dao = db.getDao(c);
UpdateBuilder<T, Long> updateBuilder = dao.updateBuilder();
updateBuilder.where().eq(columnName, value);
for (String key : values.keySet()) {
updateBuilder.updateColumnValue(key, values.get(key));
}
return updateBuilder.update();
} catch (SQLException e) {
LogUtil.e(TAG,"update",e);
} finally {
if (db != null)
db.close();
}
return -1;
}
/** 更新一条记录 */
public int update(T po) {
SQLiteHelperOrm db = new SQLiteHelperOrm();
try {
Dao dao = db.getDao(po.getClass());
return dao.update(po);
} catch (SQLException e) {
LogUtil.e(TAG,"update",e);
} finally {
if (db != null)
db.close();
}
return -1;
}
/** 查询所有记录 */
public List<T> queryForAll(Class<T> c) {
SQLiteHelperOrm db = new SQLiteHelperOrm();
try {
Dao dao = db.getDao(c);
return dao.queryForAll();
} catch (SQLException e) {
LogUtil.e(TAG,"queryForAll",e);
} finally {
if (db != null)
db.close();
}
return new ArrayList<T>();
}
}
新建一个PO
/**
* POTest.java
* 版权所有(C) 2014
* 创建者:cuiran 2014-2-12 下午3:25:08
*/
package com.ghyf.mplay.po;
import com.j256.ormlite.field.DatabaseField;
import com.j256.ormlite.table.DatabaseTable;
/**
* POTest DB的测试PO
* @author cuiran
* @version 1.0.0
*/
@DatabaseTable(tableName = "test")
public class POTest {
@DatabaseField(generatedId = true)
public long _id;
/** 标题 */
@DatabaseField
public String title;
/** 标题 */
@DatabaseField
public int position;
public POTest(long _id, String title, int position) {
super();
this._id = _id;
this.title = title;
this.position = position;
}
public POTest() {
super();
}
}
Android 使用com.j256.ormlite的更多相关文章
- (转)Android 使用com.j256.ormlite
在web开发中经常采用的hibernate,在android也提供了一个ormlite 导入所需jar包后 摘自:http://blog.csdn.net/cuiran/article/details ...
- 【Android - 框架】之ORMLite的使用
Android中有很多操作SQLite数据库的框架,现在最常见.最常用的是ORMLite和GreenDAO.ORMLite相比与GreenDAO来说是一个轻量级的框架,而且学习成本相对较低.所以这个帖 ...
- Android 快速开发系列 ORMLite 框架最佳实践
比较靠谱的Helper的写法: 1.DatabaseHelper package com.zhy.zhy_ormlite.db; import java.sql.SQLException; impor ...
- Android 快速开发系列 ORMLite 框架最佳实践之实现历史记录搜索
首先在build.gald中添加compile 'com.j256.ormlite:ormlite-android:4.48'的引用 compile 'com.j256.ormlite:ormlite ...
- [ 转]Android快速开发–使用ORMLite操作数据库
OrmLite是一个数据库操作辅助的开源框架,主要面向Java语言.在Android面向数据库开发中,是一个比较流行的开源框架,方便操作而且功能强大,今天来学习一下,最近的项目中也有所涉及,写个博客来 ...
- android数据库持久化框架, ormlite框架,
前言 Android中内置了SQLite,但是对于数据库操作这块,非常的麻烦.其实可以试用第3方的数据库持久化框架对之进行结构上调整, 摆脱了访问数据库操作的细节,不用再去写复杂的SQL语句.虽然这样 ...
- [BUG集] android 安卓项目中ORMLITE框架 Must specify one of id, generatedId, and generatedIdSequence with Id
使用ORM框架ORMLITE有一段时间,今天在操作一个对象的时候,重新运行报错如下: Must specify one of id, generatedId, and generatedIdSeque ...
- Android Ormlite 学习笔记1 -- 基础
Ormlite 是一个开源Java数据实体映射框架.其中依赖2个核心类库: 1.ormlite-android-4.48.jar 2.ormlite-core-4.48.jar 新建项目,引用上面2个 ...
- Android 数据库框架OrmLite的使用(一)
在这里记录下最基本的用法,官网上可了解相关的介绍. 1.下载OrmLite jar 在下载android的:ormlite-android-4.48.jar和ormlite-core-4.48.jar ...
随机推荐
- 含有分类变量(categorical variable)的逻辑回归(logistic regression)中虚拟变量(哑变量,dummy variable)的理解
版权声明:本文为博主原创文章,博客地址:,欢迎大家相互转载交流. 使用R语言做逻辑回归的时候,当自变量中有分类变量(大于两个)的时候,对于回归模型的结果有一点困惑,搜索相关知识发现不少人也有相同的疑问 ...
- python通过token登录,并爬取数据实例
from bs4 import BeautifulSoup import requests class Zabbix(object): def __init__(self, headers): sel ...
- IntelliJ IDEA在Local模式下Spark程序消除日志中INFO输出
在使用Intellij IDEA,local模式下运行Spark程序时,会在Run窗口打印出很多INFO信息,辅助信息太多可能会将有用的信息掩盖掉.如下所示 要解决这个问题,主要是要正确设置好log4 ...
- Android图表库MPAndroidChart(二)——线形图的方方面面,看完你会回来感谢我的
Android图表库MPAndroidChart(二)--线形图的方方面面,看完你会回来感谢我的 在学习本课程之前我建议先把我之前的博客看完,这样对整体的流程有一个大致的了解 Android图表库MP ...
- Xcode 8新功能介绍
概述 Xcode 8正式版在9月13日已经推送给开发者下载,下载之后就出现了很多编译错误,之前的插件也不能用了,但是发现Xcode8把好多不错的插件功能整合到自身了,感觉这点也挺不错. 结合自己遇到的 ...
- 关于Android PullTorefreshScrollview回到顶部实例
列表滑动下面显示按钮,点击按钮回到顶部的功能,一般scrollview会有滑动监听的事件,通过setOnScrollChangeListener()滑动监听滑动的距离来判断是否显示按钮就好了,但是Pu ...
- 剑指Offer——丑数
剑指Offer--丑数 前言 参照<剑指Offer>,通过洞悉其思想并消化吸收,改为java实现,供自己以后巩固. package cn.edu.ujn.offersword; i ...
- 【java虚拟机序列】java中的垃圾回收与内存分配策略
在[java虚拟机系列]java虚拟机系列之JVM总述中我们已经详细讲解过java中的内存模型,了解了关于JVM中内存管理的基本知识,接下来本博客将带领大家了解java中的垃圾回收与内存分配策略. 垃 ...
- TCP连接建立系列 — 客户端发送SYN段
主要内容:客户端调用connect()时的TCP层实现. 内核版本:3.15.2 我的博客:http://blog.csdn.net/zhangskd connect的TCP层实现 SOCK_STRE ...
- 巨星陨落 - Jim Gary
偶然在微软Research中搜论文时搜到了神牛Jim Gary的paper,看着照片有点眼熟,貌似在买过的哪本书中见过.于是就饶有兴致地看着Jim的生平介绍,结果- "Dr. Gray j ...