android sqlite 工具类,SqlLite的工具类SQLiteOpenHelper

package com.zhxjz.map.util;

import java.util.List;

import org.apache.commons.lang.math.NumberUtils;

import android.content.Context;

import android.database.Cursor;

import android.database.sqlite.SQLiteDatabase;

import android.database.sqlite.SQLiteDatabase.CursorFactory;

import android.database.sqlite.SQLiteOpenHelper;

import com.zhxjz.map.Config;

/**

* 操作SqlLite的工具类

*

* @author caozj

*

*/

public class DBUtil extends SQLiteOpenHelper {

private SQLiteDatabase db;

public DBUtil(Context context) {

this(context, Config.get("db"), null, NumberUtils.toInt(Config

.get("dbversion")));

}

public DBUtil(Context context, String name) {

this(context, name, null, NumberUtils.toInt(Config.get("dbversion")));

}

public DBUtil(Context context, String name, CursorFactory factory,

int version) {

super(context, name, factory, version);

db = this.getWritableDatabase();

}

@Override

public void onCreate(SQLiteDatabase arg0) {

}

@Override

public void onUpgrade(SQLiteDatabase arg0, int arg1, int arg2) {

}

public SQLiteDatabase getDB() {

return db;

}

public void closeDB() {

db.close();

}

public void execSQL(String sql, Object... args) {

db.execSQL(sql, args);

}

public Cursor query(String sql, String... args) {

return db.rawQuery(sql, args);

}

public void batchInsert(List sqllist) {

db.beginTransaction();

try {

// 批量处理操作

// do something

db.execSQL("SQL语句", new Object[] {});

db.execSQL("SQL语句", new Object[] {});

// 设置事务标志为成功,当结束事务时就会提交事务

db.setTransactionSuccessful();

} catch (Exception e) {

}

finally {

// 结束事务

db.endTransaction();

}

}

}

1.关于获取数据库:

getWritableDatabase();

getReadableDatabase();

两方法都可以获取一个用于操作数据库的SQLiteDatabase实例。当调用getWritableDatabase()或者getReadableDatabase()方法获取用于操作数据库的SQLiteDatabase实例的时候,android.database.sqlite.SQLiteOpenHelper.SQLiteOpenHelper(Context context, String name, CursorFactory factory, int version),

如果数据库不存在,Android系统会自动生成一个数据库,这里的String name就是数据库名。

2.关于onCreat方法:

onCreate()方法在初次生成数据库时才会被调用,就是在getWritableDatabase()打开数据库后立即调用,在onCreate()方法里可以生成数据库表结构及添加一些应用使用到的初始化数据

3.关于onUpgrade方法:

onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion);

在数据库的版本发生变化时会被调用,一般在软件升级时才需改变版本号,可以认为这个方法基本不用。

4.db.execSQL(sql) // 执行任何SQL语句

5.db.rawQuery(sql, selectionArgs)// 执行SQL语句的时候带参数

6.关于事务处理:

使用SQLiteDatabase的beginTransaction()方法可以开启一个事务,程序执行到endTransaction() 方法时会检查事务的标志是否为成功,如果程序执行到endTransaction()之前调用了setTransactionSuccessful() 方法设置事务的标志为成功则提交事务,如果没有调用setTransactionSuccessful() 方法则回滚事务。事务处理应用:很多时候我们需要批量的向Sqlite中插入大量数据时,单独的使用添加方法导致应用响应缓慢, 因为sqlite插入数据的时候默认一条语句就是一个事务,有多少条数据就有多少次磁盘操作。如初始8000条记录也就是要8000次读写磁盘操作。同时也是为了保证数据的一致性,避免出现数据缺失等情况。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值