| public void inertOrUpdateDateBatch(List<String> sqls) {SQLiteDatabase db = getWritableDatabase();db.beginTransaction();try {for (String sql : sqls) {db.execSQL(sql);}// 設置事務標志為成功,當結束事務時就會提交事務db.setTransactionSuccessful();} catch (Exception e) {e.PRintStackTrace();} finally {// 結束事務db.endTransaction();db.close();}} |
| db.beginTransaction(); // 手動設置開始事務for (ContentValues v : list) {db.insert("bus_line_station", null, v);}db.setTransactionSuccessful(); // 設置事務處理成功,不設置會自動回滾不提交db.endTransaction(); // 處理完成db.close() |
| InsertHelper ih = new InsertHelper(db, "bus_line_station");db.beginTransaction();final int directColumnIndex = ih.getColumnIndex("direct");final int lineNameColumnIndex = ih.getColumnIndex("line_name");final int snoColumnIndex = ih.getColumnIndex("sno");final int stationNameColumnIndex = ih.getColumnIndex("station_name");try {for (Station s : busLines) {ih.prepareForInsert();ih.bind(directColumnIndex, s.direct);ih.bind(lineNameColumnIndex, s.lineName);ih.bind(snoColumnIndex, s.sno);ih.bind(stationNameColumnIndex, s.stationName);ih.execute();}db.setTransactionSuccessful();} finally {ih.close();db.endTransaction();db.close();} |
| String sql = "insert into bus_line_station(direct,line_name,sno,station_name) values(?,?,?,?)";SQLiteStatement stat = db.compileStatement(sql);db.beginTransaction();for (Station line : busLines) {stat.bindLong(1, line.direct);stat.bindString(2, line.lineName);stat.bindLong(3, line.sno);stat.bindString(4, line.stationName);stat.executeInsert();}db.setTransactionSuccessful();db.endTransaction();db.close(); |
可以發現第三種方法需要的時間最短,鑒于該類已經在API17中廢棄,所以第四種方法應該是最優的方法。原文地址:http://www.blogjava.net/qileilove/archive/2014/05/23/414005.html
新聞熱點
疑難解答