博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
SqlLite的工具类SQLiteOpenHelper
阅读量:7055 次
发布时间:2019-06-28

本文共 2659 字,大约阅读时间需要 8 分钟。

hot3.png

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次读写磁盘操作。同时也是为了保证数据的一致性,避免出现数据缺失等情况

转载于:https://my.oschina.net/u/555061/blog/488497

你可能感兴趣的文章
Linux开始结束ping命令
查看>>
混合云平台为何更适合现代应用开发
查看>>
SHELL学习——判断
查看>>
用Python做科学计算
查看>>
Unity3d中C#使用指针(Unsafe)的办法
查看>>
Win10下用Anaconda安装TensorFlow
查看>>
http_load压力测试工具
查看>>
我的友情链接
查看>>
sokect网络编程
查看>>
ios 实现选中时阴影效果
查看>>
Post XML到一个服务器上
查看>>
linux基本网络配置
查看>>
深圳高交会
查看>>
Java中设置classpath、path、JAVA_HOME的作用
查看>>
MySQL数据库管理之日常操作
查看>>
连续潜在变量---核PCA
查看>>
lucene 3.5.0 入门笔记
查看>>
AD域桌面重定向_无权限访问桌面
查看>>
DSPLINK 介绍
查看>>
css笔试题整理(其他)
查看>>