先贴上sqliteOpenHelper的代码,我们创建测试的表是user,它有四个字段ID,name,age,height,remark,测试用的小米2,默认条数为100行。
1。使用ContentValues插入。完成时间:4805493666(纳秒)
/** *ContentValues方式 * *@paramsum *@return */ publiclonginsert1(intsum){ longbefore=System.nanoTime(); MysqLiteOpenHelperdbHelper=newMysqLiteOpenHelper(MainActivity.this); //得到数据库对象 sqliteDatabasedb=dbHelper.getWritableDatabase(); for(inti=0;i<sum;i++){ ContentValuescv=newContentValues(); cv.put("name","zhangsan"); cv.put("age","23"); cv.put("height",1.78); cv.put("remark","无"); db.insert("user",cv); } db.close(); longafter=System.nanoTime(); returnafter-before; }
2。使用基本slq语句插入。完成时间:3734808485(纳秒)
publiclonginsert2(intsum){ longbefore=System.nanoTime(); MysqLiteOpenHelperdbHelper=newMysqLiteOpenHelper(MainActivity.this); //得到数据库对象 sqliteDatabasedb=dbHelper.getWritableDatabase(); for(inti=0;i<sum;i++){ Stringsql="insertintouser(name,remark)values('zhangsan',23,1.78,'无')"; db.execsql(sql); } db.close(); longafter=System.nanoTime(); returnafter-before; }
3。使用sqlliteStatement插入。完成时间:4754616203(纳秒)
publiclonginsert3(intsum){ longbefore=System.nanoTime(); MysqLiteOpenHelperdbHelper=newMysqLiteOpenHelper(MainActivity.this); //得到数据库对象 sqliteDatabasedb=dbHelper.getWritableDatabase(); Stringsql="insertintouser(name,remark)values(?,?,?)"; sqliteStatementstmt=db.compileStatement(sql); for(inti=0;i<sum;i++){ stmt.clearBindings(); stmt.bindString(1,"zhangsan"); stmt.bindLong(2,23); stmt.bindLong(3,178); stmt.bindString(4,"无"); stmt.execute(); } db.close(); longafter=System.nanoTime(); returnafter-before; }
4。使用一次插入多条的方式。完成时间:245414315(纳秒)
publiclonginsert4(intsum){ longbefore=System.nanoTime(); MysqLiteOpenHelperdbHelper=newMysqLiteOpenHelper(MainActivity.this); //得到数据库对象 sqliteDatabasedb=dbHelper.getWritableDatabase(); for(inti=0;i<sum/10;i++){ Stringsql="insertintouser(name,'无')," +"('zhangsan','无')"; db.execsql(sql); } db.close(); longafter=System.nanoTime(); returnafter-before; }
5.使用事务处理插入方式。完成时间:229787881(纳秒)
publiclonginsert5(intsum){ longbefore=System.nanoTime(); MysqLiteOpenHelperdbHelper=newMysqLiteOpenHelper(MainActivity.this); //得到数据库对象 sqliteDatabasedb=dbHelper.getWritableDatabase(); db.beginTransaction(); for(inti=0;i<sum;i++){ Stringsql="insertintouser(name,'无')"; db.execsql(sql); } db.setTransactionSuccessful(); db.endTransaction(); db.close(); longafter=System.nanoTime(); returnafter-before; } 总结
以上是内存溢出为你收集整理的sqlite插入速度优化方案全部内容,希望文章能够帮你解决sqlite插入速度优化方案所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)