android多线程操作数据库,Android多线程操作sqlite数据库连接池框架的一种设计思路...

本文探讨了一种Android应用程序中针对SQLite数据库的连接池设计方案,旨在提高频繁操作数据库时的性能。通过继承SQLiteOpenHelper,创建封装类和数据库连接池类,实现了在多线程环境下更有效地管理和复用数据库连接。连接池通过维护数据库连接的向量,确保在达到最大连接数限制时,其他线程能等待并获取到可用连接。然而,SQLite3数据库的写入限制意味着多线程写操作可能导致‘database is locked’异常,可通过调整连接池大小来避免该问题。
摘要由CSDN通过智能技术生成

我们在Android应用程序开发当中经常会用到数据库,一般在有两种主要开发思路。

第一种:每次需要对数据库操作的时候建立连接,操作完成后,马上关闭连接。

这个方式一般用于不怎么频繁操作数据库的情况,用完后马上关闭达到节省系统资源的目的。

第二种:应用程序一启动或在第一次使用数据库建立连接后,就始终保持数据库的连接而不关闭,知道退出该应用程序 。

这个方式一般常用频繁操作数据库,因为频繁的打开关闭数据库会影响程序的性能。

我们这博客主要是介绍第二种设计思路,即Sqlite数据库连接池的设计方案。

1》继承SQLiteOpenHelper类,实现它的相关重写方法,伪代码如下

public class XxxHelper extends SQLiteOpenHelper{

public void onCreate(SQLiteDatabase db)

{

}

public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion)

{

}

2》定义一个封装类,用于维护SQLiteDatabase对象和其对数据库的所有操作(增,删,改,查等),伪代码如下:

public class XxxSQLiteDatabase{

private SQLiteDatabase mSQLiteDatabase = null;

private XxxHelper mDatabaseHelper = null;

public SQLiteDatabase openDatabase(){

mSQLiteDatabase = mDatabaseHelper.getReadableDatabase();

return mSQLiteDatabase;

}

public void insert(){}

public void query(){}

public void updat(){}

public void delete(){}

}

3》定义数据库连接池类,也是最关键的一个类,代码如下:

public class XxxSQLiteDatabasePool{

private int initialSQLiteDatabase = 2; // 连接池的初始大小

private int incrementalSQLiteDatabase = 2;// 连接池自动增加的大小

private int maxSQLiteDatabase = 10; // 连接池最大的大小

private VectorpSQLiteDatabases = null; // 存放连接池中数据库连接的向量

public static TASQLiteDatabasePool getInstance()

{

return mSQLiteDatabasePool;

}

public synchronized void createPool()

{

// 确保连接池没有创建

// 如果连接池己经创建了,保存连接的向量 sqLiteDatabases 不会为空

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值