您的位置:首页 > 移动开发 > Android开发

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

首先建一张表,结构如下:

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这个毛病
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: