之前操作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这个毛病

更多相关文章

  1. android sqlite SQLiteDatabase 操作大全 不看后悔!必收藏!看后精
  2. Android多线程(三)HandlerThread源码原理解析
  3. [置顶] android ANR
  4. Android:浅谈 mvp-clean 架构
  5. 【Android】实现登录、注册、数据库操作(极简洁)
  6. Android(安卓)Looper
  7. Android界面刷新的方法
  8. 使用线程更新UI
  9. android设备与蓝牙模块之间交互(蓝牙命令,收发)的两种方式,附DEMO下

随机推荐

  1. Qt on Android(安卓)Episode 4(翻译)
  2. 配置adb
  3. Android(安卓)显示不满屏的问题解决
  4. Android(安卓)- 设备的DeviceId
  5. Android之网络请求6————OkHttp源码3:
  6. Android(安卓)Test 基础知识
  7. android camera(四):camera 驱动 GT2005
  8. Android(安卓)自定义view(二) 如何实现自
  9. Android(安卓)Studio主要目录及文件简介
  10. Android(安卓)支持多屏幕机制