android用jdbc多线程操作sqlite小结
16lz
2021-01-24
之前操作sqlite一直用sdk中的SQLiteOpenHelper,在多线程操作数据库(特别是插入数据)的时候,总是提示sqlite已经被锁定,其它线程就无法继续了。
今天研究了一下android用jdbc操作sqlite,再用多线程去操作数据库的时候就不会有这个状况了,
准备工作是下载驱动jar包,http://code.google.com/p/sqldroid/downloads/list
项目demo:http://download.csdn.net/detail/s478853630/8131379
首先建一张表,结构如下:
create table backup ( id integer primary key autoincrement, url varchar(200), param varchar(500), memberId integer, data text);再写一个线程的内部类:
public class Insert extends Thread {private int index;public Insert(int index) {this.index = index;}public void run() {try {final String path = FileUtil.get().getContextRoot() + "car.db";Connection conn = DriverManager.getConnection("jdbc:sqldroid:" + path);String sql = "insert into backup (url, memberId, data) values ('http://www.baidu.com', '" + index + "', 'data" + index + "')";PreparedStatement statement = conn.prepareStatement(sql);statement.executeUpdate();statement.close();conn.close();} catch (Exception e) {e.printStackTrace();}}}
最后启动多线程:
Class.forName("org.sqldroid.SqldroidDriver");for (int i = 0; i < 20; i++) {new Insert(i).start();}
20个线程在android手机里同时运行,也很顺畅,
总算解决了database is locked这个毛病
更多相关文章
- android sqlite SQLiteDatabase 操作大全 不看后悔!必收藏!看后精
- Android多线程(三)HandlerThread源码原理解析
- [置顶] android ANR
- Android:浅谈 mvp-clean 架构
- 【Android】实现登录、注册、数据库操作(极简洁)
- Android(安卓)Looper
- Android界面刷新的方法
- 使用线程更新UI
- android设备与蓝牙模块之间交互(蓝牙命令,收发)的两种方式,附DEMO下