Android开发小记--开发实用工具类--数据库操作类

做应用开发难免需要用到数据库,而做Android开发就更加会经常使用其自带的SQLite数据库了,因为使用SQLite比使用其他方式更加易于管理和操作。下面是我写的一个数据库操作抽象类,由于Android自带的SQLite数据库操作类已经帮助我们简化了很多操作,所以这个抽象类主要是为了方便我们建库和升级库结构使用的

import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import android.database.sqlite.SQLiteDatabase.CursorFactory;
import android.util.Log;
/**
*TODO数据库帮手基类,一个数据库对应一个具体实现。
*可以在内部定义表名,字段名和各种业务逻辑操作等等。
*对数据库的增删改操作,请使用事务管理。
*对数据的查询操作,请在使用Cursor前,调用startManagingCursor()方法管理Cursor。
*

*/

public abstract class AbstractDatabaseHelper {

/**
*SQLite数据库实例
*/

protectedSQLiteDatabasemDb=null;

/**
*数据库创建帮手
*/

protectedCreateDBHelpermDbHelper=null;

/**
*获得当前数据库帮手类标识(一般是该类名称),用于日志等的记录
*
@return
*/

protectedabstractStringgetTag();

/**
*获得数据库名称
*
@return
*/

protectedabstractStringgetDatabaseName();

/**
*获得数据库版本,值至少为1。
*当数据库结构发生改变的时候,请将此值加1,系统会在初始化时自动调用
*createDBTables和dropDBTables方法更新数据库结构。
*
@return
*/

protectedabstractintgetDatabaseVersion();

/**
*创建数据库表的SQL语句,一个元素一条语句
*
@return
*/

protectedabstractString[]createDBTables();

/**
*删除数据库表的SQL语句,一个元素一条语句
*
@return
*/

protectedabstractString[]dropDBTables();

/**
*
*TODO内部数据库创建帮手类
*

*/

privateclassCreateDBHelperextendsSQLiteOpenHelper
{
publicCreateDBHelper(Contextctx)
{
super(ctx,getDatabaseName(),null,getDatabaseVersion());
}

@Override
publicvoidonCreate(SQLiteDatabasedb){
//TODOAuto-generatedmethodstub
executeBatch(createDBTables(),db);
}


@Override
publicvoidonUpgrade(SQLiteDatabasedb,intoldVersion,intnewVersion){
//TODOAuto-generatedmethodstub
Log.w(getTag(),"Upgradingdatabase'"+getDatabaseName()+"'fromversion"+oldVersion+"to"+newVersion);
executeBatch(dropDBTables(),db);
onCreate(db);
}


/**
*批量执行Sql语句
*
@paramsqls
*
@paramdb
*/

privatevoidexecuteBatch(String[]sqls,SQLiteDatabasedb)
{
if(sqls==null)
return;

db.beginTransaction();
try
{
intlen=sqls.length;
for(inti=0;i<len;i++)
{
db.execSQL(sqls[i]);
}

db.setTransactionSuccessful();
}
catch(Exceptione){
Log.e(getTag(),e.getMessage(),e);
}
finally{
db.endTransaction();
}


}


}


/**
*打开或者创建一个指定名称的数据库
*
@paramdbName
*
@paramctx
*/

publicvoidopen(Contextctx)
{
Log.i(getTag(),
"Opendatabase'"+getDatabaseName()+"'");
mDbHelper
=newCreateDBHelper(ctx);
mDb
=mDbHelper.getWritableDatabase();
}


/**
*关闭数据库
*/

publicvoidclose()
{
if(mDbHelper!=null)
{
Log.i(getTag(),
"Closedatabase'"+getDatabaseName()+"'");
mDbHelper.close();
}

}


}

更多相关文章

  1. php实现post请求 接收android客户端json数据 存储数据库 并返回j
  2. Android之数据存储详解(二)之SQLite数据库存储数据
  3. Android 操作系统 获取Root权限 原理解析
  4. android 存储操作 大小显示换算 kb mb KB MB 读取
  5. android 下Excel操作
  6. Android SQLite数据库解析并使用两种方法实现增删改查
  7. mono android 非UI线程操作UI线程

随机推荐

  1. MySQL高性能主从架构的复制原理及配置详
  2. 确定记录出现的次数
  3. 整合Hadoop2.2.0+HBase0.96+Hive0.12+MyS
  4. linux下mysql配置文件my.cnf详解
  5. mysql获取某个范围内的随机数,写了个存储
  6. 吐槽:MySQL和Delphi2010的UTF8编码
  7. 无法运行查询:SQLSTATE [23000]:完整性约束
  8. 在woody上安装了mysql为什么没有开3306端
  9. 网易MySQL数据库工程师微专业学习笔记(十
  10. 用PHP比较PHP中的字符串