写应用程序难免要用的数据库操作,一个好用的类库可以为自己提供很大的方便。下面转了一个不错的,希望对和我一样的朋友有所帮助。

转自:http://www.cnblogs.com/liwqiang/archive/2010/08/08/1795193.html

 

import android.content.Context; import android.database.Cursor; import android.database.SQLException; import android.database.sqlite.SQLiteDatabase; import android.database.sqlite.SQLiteOpenHelper; import android.util.Log; public abstract class AbstractDBHelper { // SQLite数据库实例 protected SQLiteDatabase mDb = null; //数据库创建帮手 protected CreateDBHelper mDbHelper = null; //获得当前数据库帮手类标识(一般是该类名称),用于日志等的记录 protected abstract String getTag(); // 获得数据库名称 protected abstract String getDatabaseName(); /** * 获得数据库版本,值至少为1。 * 当数据库结构发生改变的时候,请将此值加1,系统会在初始化时自动调用 * createDBTables和dropDBTables方法更新数据库结构。 */ protected abstract int getDatabaseVersion(); // 创建数据库表的SQL语句,一个元素一条语句 protected abstract String[] createDBTables(); //删除数据库表的SQL语句,一个元素一条语句 protected abstract String[] dropDBTables(); // 内部数据库创建帮手类 private class CreateDBHelper extends SQLiteOpenHelper { public CreateDBHelper(Context ctx) { super(ctx, getDatabaseName(), null, getDatabaseVersion()); } @Override public void onCreate(SQLiteDatabase db) { executeBatch(createDBTables(), db); } @Override public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { Log.w(getTag(), "Upgrading database '" + getDatabaseName() + "' from version " + oldVersion + " to " + newVersion); executeBatch(dropDBTables(), db); onCreate(db); } //批量执行Sql语句 private void executeBatch(String[] sqls, SQLiteDatabase db) { if(sqls == null) { return; } db.beginTransaction(); try { int len = sqls.length; for(int i = 0; i < len; i++) { db.execSQL(sqls[i]); } db.setTransactionSuccessful(); } catch(Exception e) { Log.e(getTag(), e.getMessage(), e); } finally { db.endTransaction(); } } } // 打开或者创建一个指定名称的数据库 public void open(Context ctx) { Log.i(getTag(), "Open database '" + getDatabaseName() + "'"); try { mDbHelper = new CreateDBHelper(ctx); if(mDbHelper!=null) { mDb = mDbHelper.getWritableDatabase(); } } catch(SQLException e) { Log.e("open", e.getMessage()); } } //关闭数据库 public void close() { try { if(mDbHelper != null) { Log.i(getTag(), "Close database '" + getDatabaseName() + "'"); mDbHelper.close(); } } catch(SQLException e) { Log.e("close", e.getMessage()); } } //执行sql protected void executeSQL(String sql) { if(sql.equals("")) { return; } try { mDb.execSQL(sql); } catch(SQLException e) { Log.i(getTag(),e.getMessage(),e); } } protected Cursor Query(String sql,String[] strArgs) { return mDb.rawQuery(sql,strArgs); } } 

更多相关文章

  1. SpringBoot 2.0 中 HikariCP 数据库连接池原理解析
  2. 查看android sqlite数据库常用操作
  3. CCSprite在Android平台下显示SDCard中的图片
  4. Android(安卓)external.db和internal.db数据库
  5. Android:保存图片到Sqlite数据库
  6. android Sqlite3 相同sql 在命令行和数据库管理工具查询出的数据
  7. 视频播放拖动进度时间定位不准问题
  8. 获取andrid apn信息
  9. Android(安卓)SugerORM框架的使用

随机推荐

  1. Android开发的重要方面之Makefile分析
  2. Android支持HTML标签
  3. 谷歌关于Android平板应用开发的一些资源
  4. Android之自定义式Style与Theme
  5. Android 3.0发布了
  6. Android之应用进程托管
  7. Swift 的强大之处 - iOS移动开发周报
  8. Android中Intent的深入解析
  9. 获得 android 的 root 权限
  10. 那些你不知道的Android小事儿