Sqlite
发布时间:2022-05-22 发布网站:大佬教程 code.js-code.com
大佬教程收集整理的这篇文章主要介绍了sqlite插入速度优化方案,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
先贴上sqliteOpenHelper的代码,我们创建测试的表是user,它有四个字段id,name,age,height,REMARK,测试用的小米2,默认条数为100行。
- //MysqliteOpenHelper作为一个访问sqlite的帮助类,提供两方面的功能
- //1.getReadableDatabase(),getWritableDatabase()可以获得sqliteDatatbase对象,
- //对这个对象进行相关操作
- //2.提供了onCreate()和onUpgrade()两个回调函数,允许我们在创建和升级数据库时进行操作
- publicclass@H_773_11@mysqliteOpenHelperextendssqliteOpenHelper{
-
- publicstaticfinalStringDATABASE_name="test.db";
-
- publicstaticfinalStringTAG="MysqliteOpenHelper";
-
- public@H_773_11@mysqliteOpenHelper(Contextcontext){
- this(context,DATABASE_name,null,1);
- }
-
- public@H_773_11@mysqliteOpenHelper(Contextcontext,intversion){
- this(context,version);
- }
-
- //必须要有这一个构造方法
- public@H_773_11@mysqliteOpenHelper(Contextcontext,Stringname,
- cursorFactoryfactory,intversion){
- super(context,factory,version);
- //Todoauto-generatedconstructorstub
- }
-
- //当数据库第一次创建的时候被调用,
- //当调用getReadableDatabase()或getWritableDatabase的时候
- @OverrIDe
- publicvoIDonCreate(sqliteDatabasedb){
- //Todoauto-generatedmethodstub
- Log.d(tag,"onCreate");
-
- Stringsql="createtableuser(IDIntegerprimaryKeyautoincrement,"
- +"namevarchar(20),"+"ageInteger,"+"heightlong,"
- +"REMARKvarchar(12))";
- db.execsql(sql);
- }
-
- publicvoIDclose(){
- sqliteDatabasedb=this.getWritableDatabase();
- db.execsql("droptableuser");
- }
-
- @OverrIDe
- publicvoIDonUpgrade(sqliteDatabasedb,intoldVersion,intnewVersion){
- //Todoauto-generatedmethodstub
- Log.d(tag,"onUpgrade");
- }
-
- }
1。使用COntentValues插入。完成时间:4805493666(纳秒)
- /**
- *ContentValues方式
- *
- *@paramsum
- *@return
- */
- publiclonginsert1(intsum){
- longbefore=System.nanoTime();
-
- @H_271_8@mysqliteOpenHelperdbHelper=new@H_773_11@mysqliteOpenHelper(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(纳秒)
3。使用sqlliteStatement插入。完成时间:4754616203(纳秒)
4。使用一次插入多条的方式。完成时间:245414315(纳秒)
- publiclonginsert4(intsum){
- longbefore=System.nanoTime();
-
- @H_271_8@mysqliteOpenHelperdbHelper=new@H_773_11@mysqliteOpenHelper(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(纳秒)
大佬总结
以上是大佬教程为你收集整理的sqlite插入速度优化方案全部内容,希望文章能够帮你解决sqlite插入速度优化方案所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。