关于Android的批量插入的方法
2015-12-07 11:11
399 查看
最近在修改项目bug的时候,发现一个数据批量插入数据库的问题。原来的做法是public long insertDate(List<CityModel> list) {synchronized (cityDbHelper) {long count = 0;try {cityDbHelper.open();ContentValues cv = null;for (CityModel city : list) {cv = new ContentValues();cv.put("cityid", city.CityId);cv.put("name", city.CityName);cv.put("pinyin", city.NameSort);cv.put("hotFlag", city.HotFlag);count = cityDbHelper.insert(tableName, cv);}} catch (Exception e) {e.printStackTrace();} finally {if (cityDbHelper != null) {cityDbHelper.close();}}return count;}}
<pre name="code" class="java">cityDbHelper.insert方法:
public long insert(String table, ContentValues cv) {long count = 0;try {mDb.beginTransaction();count = mDb.insert(table, null, cv);mDb.setTransactionSuccessful();} catch (Exception e) {e.printStackTrace();} finally {mDb.endTransaction();}return count;}我发现这样插入的话,不仅耗时,而且一直显示加载的dialog都不转了,卡住了,于是在网上查了下关于批量插入的方法,我参考的是http://www.blogjava.net/qileilove/archive/2014/05/23/414005.html这篇文章根据这篇文章,我对项目里的方法做了修改public void insertDate(List<CityModel> list) {synchronized (cityDbHelper) {SQLiteDatabase db=cityDbHelper.open().getMDB();try {//批量插入String sql="insert into cityinfo(cityid,name,pinyin,hotFlag) values(?,?,?,?)";SQLiteStatement stat=db.compileStatement(sql);db.beginTransaction();for (CityModel city : list) {stat.bindString(1, city.CityId);stat.bindString(2, city.CityName);stat.bindString(3, city.NameSort);stat.bindString(4, city.HotFlag);stat.executeInsert();}db.setTransactionSuccessful();} catch (Exception e) {e.printStackTrace();} finally {db.endTransaction();if (cityDbHelper != null) {cityDbHelper.close();}}}}最后发现,不仅插入很快,而且dialog正常转动了。(笔者第一次发博客,不善言表,请多见谅)
相关文章推荐
- 使用C++实现JNI接口需要注意的事项
- Android IPC进程间通讯机制
- Android Manifest 用法
- [转载]Activity中ConfigChanges属性的用法
- Android之获取手机上的图片和视频缩略图thumbnails
- Android之使用Http协议实现文件上传功能
- Android学习笔记(二九):嵌入浏览器
- android string.xml文件中的整型和string型代替
- i-jetty环境搭配与编译
- android之定时器AlarmManager
- android wifi 无线调试
- Android Native 绘图方法
- Android java 与 javascript互访(相互调用)的方法例子
- android 代码实现控件之间的间距
- android FragmentPagerAdapter的“标准”配置
- Android"解决"onTouch和onClick的冲突问题
- android:installLocation简析
- android searchView的关闭事件