android sqlite 工具类,SQLite数据库工具类

概述

该数据库工具类依赖了Room的相关包,使用很方便,现整理归档如下。使用时可以直接当做工具类使用。步骤

引入依赖

implementation 'android.arch.persistence:db:1.0.0'

implementation 'android.arch.persistence:db-framework:1.0.0'

创建SupportDbManager

package com.example.a002034.myapplication.db;

import android.arch.persistence.db.SupportSQLiteDatabase;

import android.arch.persistence.db.SupportSQLiteOpenHelper;

import android.support.annotation.NonNull;

import java.util.concurrent.atomic.AtomicInteger;

/**

* DbManager.

*

* @author xuzhuyun

*/

public class SupportDbManager {

private SupportSQLiteOpenHelper mOpenHelper;

private SupportSQLiteDatabase mDb;

private AtomicInteger mOpenCounter;

public SupportDbManager(@NonNull SupportSQLiteOpenHelper openHelper) {

this.mOpenHelper = openHelper;

this.mOpenCounter = new AtomicInteger();

}

public void destroy() {

this.mOpenHelper.close();

this.mOpenHelper = null;

this.mDb = null;

this.mOpenCounter.set(0);

this.mOpenCounter = null;

}

public synchronized SupportSQLiteDatabase openDb() {

if (this.mOpenCounter.incrementAndGet() == 1) {

this.mDb = this.mOpenHelper.getWritableDatabase();

}

return this.mDb;

}

public synchronized void closeDb() {

if (this.mOpenCounter.decrementAndGet() == 0) {

this.mOpenHelper.close();

}

}

}

创建DbHelper

package com.example.a002034.myapplication.db;

/**

* .

*

* @author

*/

import android.arch.persistence.db.SupportSQLiteDatabase;

import android.arch.persistence.db.SupportSQLiteOpenHelper;

import android.arch.persistence.db.framework.FrameworkSQLiteOpenHelperFactory;

import android.util.Log;

import com.example.a002034.myapplication.Configs;

import com.example.a002034.myapplication.RootApp;

/**

* SQLiteOpenHelper.

*

* @author xuzhuyun

*/

public class DbHelper {

private static final String TAG = "DbHelper";

private SupportSQLiteOpenHelper mOpenHelper;

public DbHelper() {

SupportSQLiteOpenHelper.Configuration configuration = SupportSQLiteOpenHelper.Configuration.builder(RootApp.getInstance())

.name(Configs.DB_NAME)

.callback(new DbCallback(Configs.DB_VERSION))

.build();

SupportSQLiteOpenHelper.Factory factory = new FrameworkSQLiteOpenHelperFactory();

mOpenHelper = factory.create(configuration);

}

public SupportSQLiteOpenHelper getOpenHelper() {

return mOpenHelper;

}

class DbCallback extends SupportSQLiteOpenHelper.Callback {

DbCallback(int version) {

super(version);

}

@Override

public void onCreate(SupportSQLiteDatabase db) {

Log.i(TAG, "[db] 创建数据库");

// db.execSQL(Cabinet.CREATE_TABLE);

// db.execSQL(Cell.CREATE_TABLE);

// db.execSQL(Parcel.CREATE_TABLE);

}

@Override

public void onUpgrade(SupportSQLiteDatabase db, int oldVersion, int newVersion) {

Log.i(TAG,

"[db] 升级数据库,db = [" + db.getPath() + "], oldVersion = [" + oldVersion + "], currentVersion = [" + newVersion + "]");

}

}

}

以上RootApp是我们自定义的Application类,目的是获取Context对象,这里自己获取就好.我的RootApp代码是:

package com.example.a002034.myapplication;

import android.app.Application;

/**

* Application.

*

* @author xuzhuyun

*/

public class RootApp extends Application {

private static final String TAG = "RootApp";

private static RootApp mContext;

@Override

public void onCreate() {

super.onCreate();

mContext = this;

//初始化数据库

Configs.getInstance().init();

}

public static RootApp getInstance() {

if (mContext == null) {

mContext = new RootApp();

}

return mContext;

}

}

记得在Application类中初始化数据库。

创建用到的配置类Configs

package com.example.a002034.myapplication;

import com.example.a002034.myapplication.db.DbHelper;

import com.example.a002034.myapplication.db.SupportDbManager;

/**

* 全局配置类.

*

* @author xuzhuyun

*/

public class Configs {

/**

* 数据库名称.

*/

public static final String DB_NAME = "test.db";

/**

* 数据库版本号.

*/

public static final int DB_VERSION = 1;

private SupportDbManager mDbManager;

private Configs() {

}

public void init() {

initPersistent();

}

public SupportDbManager getDbManager() {

if (mDbManager == null) {

throw new IllegalStateException("must invoke method init() first");

}

return mDbManager;

}

private void initPersistent() {

DbHelper smartDbHelper = new DbHelper();

mDbManager = new SupportDbManager(smartDbHelper.getOpenHelper());

}

private static class SingletonHolder {

private static final Configs INSTANCE = new Configs();

}

public static Configs getInstance() {

return SingletonHolder.INSTANCE;

}

}

调用

获取SupportDbManager对象和SupportSQLiteDatabase对象

SupportDbManager dbManager = Configs.getInstance().getDbManager();

SupportSQLiteDatabase db = dbManager.openDb();

拿到这些对象后,我们就可以做数据库增删改查操作了。其中,结合该工具类,我们还可以集成sqldelight插件,以后再补上sqldelight的用法。

Demo下载

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值