Android OrmLite框架的简单使用

项目一直在使用OrmLite框架,用了这么久,终于有时间做下总结,顺便记录下,方便以后使用

首先说下DataBaseHelper的创建
public class DataBaseHelper extends OrmLiteSqliteOpenHelper {

    private Dao<UserVO, Integer> mUserDao = null;

    public DataBaseHelper (Context context) {
        super(context, test, null, 1);
        // TODO Auto-generated constructor stub
    }

    @Override
    public void onCreate(SQLiteDatabase arg0, ConnectionSource arg1) {
        // TODO Auto-generated method stub
        try {
            //创建数据表
            TableUtils.createTableIfNotExists(arg1, UserVO.class);
        } catch (java.sql.SQLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }

    @Override
    public void onUpgrade(SQLiteDatabase arg0, ConnectionSource arg1, int arg2,
            int arg3) {
        // TODO Auto-generated method stub

    }

    public Dao<person, integer=""> getPersonDao() throws java.sql.SQLException {
        if (mUserDao == null) {
            mUserDao = getDao(UserVO.class);
        }
        return mUserDao;
    }

}

**这里就不列出UserVO类了
Dao是一个很重要的类, 这些Dao对象用于以后的数据库操作,其包含两个泛型,第一个泛型表DAO操作的类,第二个是标记数据表的ID。**
用到数据库,那么一定会涉及到SD卡上的数据库访问
/**
 * 用于支持对存储在SD卡上的数据库的访问
 **/
public class DatabaseContext extends ContextWrapper {

    /**
     * 构造函数
     * 
     * @param base
     *            上下文环境
     */
    public DatabaseContext(Context base) {
        super(base);
    }

    /**
     * 获得数据库路径,如果不存在,则创建对象对象
     * 
     * @param name
     * @param mode
     * @param factory
     */
    @Override
    public File getDatabasePath(String name) {
        /*
         * // 判断是否存在sd卡 boolean sdExist = Environment.MEDIA_MOUNTED
         * .equals(Environment.getExternalStorageState()); if (!sdExist) {//
         * 如果不存在, Log.e("SD卡管理:", "SD卡不存在,请加载SD卡"); return null; } else {
         */
        String dbDir = AppContext.getAppContext().getdbPath() + name;// 数据库路径
        File dbFile = new File(dbDir);
        return dbFile;

    }

    /**
     * 重载这个方法,是用来打开SD卡上的数据库的,android 2.3及以下会调用这个方法。
     * 
     * @param name
     * @param mode
     * @param factory
     */
    @Override
    public SQLiteDatabase openOrCreateDatabase(String name, int mode,
            SQLiteDatabase.CursorFactory factory) {
        SQLiteDatabase result = SQLiteDatabase.openOrCreateDatabase(
                getDatabasePath(name), null);
        return result;
    }

    /**
     * Android 4.0会调用此方法获取数据库。
     * 
     * @see android.content.ContextWrapper#openOrCreateDatabase(java.lang.String,
     *      int, android.database.sqlite.SQLiteDatabase.CursorFactory,
     *      android.database.DatabaseErrorHandler)
     * @param name
     * @param mode
     * @param factory
     * @param errorHandler
     */
    @Override
    public SQLiteDatabase openOrCreateDatabase(String name, int mode,
            CursorFactory factory, DatabaseErrorHandler errorHandler) {
        SQLiteDatabase result = SQLiteDatabase.openOrCreateDatabase(
                getDatabasePath(name), null);
        return result;
    }
}
创建了我们自己的数据库之后就可以来,对数据库操作了,接下来我们看看如何进行数据库的增删查改
**增加

这些方法使用起来都比较简单,我们只需将自己的Bean传入到下列方法中即可**
create:插入一条数据
createIfNotExists:如果不存在则插入
createOrUpdate:如果存在则更新

查询

一般查询操作比例都会占很大
1.多字段条件按照顺序查询:

List<UserVo> list = null;
try {
    QueryBuilder builder = dao.queryBuilder(); 
    builder.where().eq(字段名1,条件1).and.eq(字段名2,条件2); 
    builder.orderBy(DbConst.TdPdaJjTable.COLUMN_OPRTIME, false);
    list = mUserDao .query(builder.prepare());
} catch (SQLException e) {
    e.printStackTrace();
}

2.分页查询

QueryBuilder<person, integer=""> builder = dao.queryBuilder();
builder.offset(10);//表示查询的起始位置
builder.limit(10);//表示总共获取的对象数量
builder.query();
删除和更新

与查询操作基本相同,ORMLite同样为我们提供了一系列的方法,同时也提供了复杂删除,复杂更改的DeleteBuilder和UpdateBuilder,其用法与QueryBuilder相似,就不详细介绍了。

SQL语句的使用
// 查询
Cursor cursor1 = db.rawQuery(sql, null);
// 执行SQL语句,可以执行删除,更新,等等
db.execSql(sql, null);
// 删除某时间点之前的数据
try {
    String sql = "delete from table where SendTime < " + "'" + dateTime + "'";
    db.execSQL(sql);
} catch (Exception e) {
    e.printStackTrace();
Log.e("~~~~~~~", e.getMessage());
}

先写到这里吧,有时间继续补充


  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值