android用jdbc多线程操作sqlite小结
2014-04-28 17:26
218 查看
之前操作sqlite一直用sdk中的SQLiteOpenHelper,在多线程操作数据库(特别是插入数据)的时候,总是提示sqlite已经被锁定,其它线程就无法继续了。
今天研究了一下android用jdbc操作sqlite,再用多线程去操作数据库的时候就不会有这个状况了,
准备工作是下载驱动jar包,http://code.google.com/p/sqldroid/downloads/list
项目demo:http://download.csdn.net/detail/s478853630/8131379
首先建一张表,结构如下:
最后启动多线程:
20个线程在android手机里同时运行,也很顺畅,
总算解决了database is locked这个毛病
今天研究了一下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自定义Dialog
- 面面具到!android重力传感器
- Android心得
- android知识总结
- Android WebView — passing a javascript callback function to Android
- 反编译android应用,降低权限反吸费和隐藏广告,重新打包和签名
- Android开发学习之SQLite详解一
- Android 环境下编译FFmpeg
- android 中实现图片倒影效果
- Android设置loading的属性
- Android获取Manifest中<meta-data>元素的值
- 50个Android开发技巧(09 避免用EditText对日期进行验证)
- android数据库升级中数据迁移、修改或删除列策略
- Android 混淆代码总结
- Android中的@override
- 50个Android开发技巧(10 为TextView添加样式)
- android 模拟器
- 关于Android 的内存泄露及分析(转)
- Android 近百个项目的源代码
- Android之ListView的优化