android用jdbc多线程操作sqlite小结

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

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

s478853630

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值