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 ...
随机推荐
- 03_OGNL
1.值栈: 解答Struts能够直接获取属性值: 原因:Struts并不是直接通过request隐式对象中获取,而是将整个对象封装到了ValueStack值栈中,直接匹配是否存在这个属性,找到了就取出 ...
- PHP Zip File 函数
通过 PHP 中的相关函数,你可以实现 zip 文件的解压缩操作! PHP Zip File 简介 Zip File 函数允许您读取压缩文件. 安装 如需在服务器上运行 Zip File 函数,必须安 ...
- 无法启动postgresql的错误
chown postgres /etc/ssl/private/ssl-cert-snakeoil.key chgrp postgres /etc/ssl/private/ssl-cert-snake ...
- 带有进度条的WebView
带有进度条的WebView 本篇继于WebView的使用 效果图 自定义一个带有进度条的WebView package com.kongqw.kbox.view; import android.con ...
- Swift:Minimizing Annotation with Type Inference
许多程序猿更喜欢比如Python和Javascript这样的动态语言,因为这些语言并不要求程序猿为每个变量声明和管理它们的类型. 在大多数动态类型的语言里,变量可以是任何类型,而类型声明是可选的或者根 ...
- ROS机器人程序设计(原书第2版)补充资料 (贰) 第二章 ROS系统架构及概念
ROS机器人程序设计(原书第2版)补充资料 (贰) 第二章 ROS系统架构及概念 书中,大部分出现hydro的地方,直接替换为indigo或jade或kinetic,即可在对应版本中使用. 由于工作事 ...
- Android开发艺术探索笔记——第一章:Activity的生命周期和启动模式
Android开发艺术探索笔记--第一章:Activity的生命周期和启动模式 怀着无比崇敬的心情翻开了这本书,路漫漫其修远兮,程序人生,为自己加油! 一.序 作为这本书的第一章,主席还是把Activ ...
- x264源代码简单分析:x264_slice_write()
===================================================== H.264源代码分析文章列表: [编码 - x264] x264源代码简单分析:概述 x26 ...
- Swift延迟加载的一种用途
大熊猫猪·侯佩原创或翻译作品.欢迎转载,转载请注明出处. 如果觉得写的不好请多提意见,如果觉得不错请多多支持点赞.谢谢! hopy ;) 有以下一种情况: 我们试图用Cocoa的语音合成类NSSpee ...
- git提交代码到github
前言:转载请注明出处:http://blog.csdn.net/hejjunlin/article/details/52117504 git提交代码到github 命令汇总: git init git ...