先贴上sqliteOpenHelper的代码,我们创建测试的表是user,它有四个字段id,name,age,height,remark,测试用的小米2,默认条数为100行。
[java]
view plain
copy
@H_403_15@
@H_403_15@
@H_403_15@
- //MysqLiteOpenHelper作为一个访问sqlite的帮助类,提供两方面的功能
- //1.getReadableDatabase(),getWritableDatabase()可以获得sqliteDatatbase对象,
- //对这个对象进行相关操作
- //2.提供了onCreate()和onUpgrade()两个回调函数,允许我们在创建和升级数据库时进行操作
- publicclassMysqLiteOpenHelperextendssqliteOpenHelper{
- staticfinalStringDATABASE_NAME="test.db";
- finalStringTAG="MysqLiteOpenHelper";
- publicMysqLiteOpenHelper(Contextcontext){
- this(context,DATABASE_NAME,null,1);
- }
- publicMysqLiteOpenHelper(Contextcontext,153); background-color:inherit; font-weight:bold">intversion){
- //必须要有这一个构造方法
- CursorFactoryfactory,super(context,factory,0); background-color:inherit">//TODOAuto-generatedconstructorstub
- }
- //当数据库第一次创建的时候被调用,0); background-color:inherit">//当调用getReadableDatabase()或getWritableDatabase的时候
- @Override
- voidonCreate(sqliteDatabasedb){
- //TODOAuto-generatedmethodstub
- Log.d(TAG,"onCreate");
- Stringsql="createtableuser(idintegerprimarykeyautoincrement,"
- +"namevarchar(20),"+"ageinteger,"+"heightlong,"
- +"remarkvarchar(12))";
- db.execsql(sql);
- voidclose(){
- sqliteDatabasedb=this.getWritableDatabase();
- db.execsql("droptableuser");
- voidonUpgrade(sqliteDatabasedb,153); background-color:inherit; font-weight:bold">intoldVersion,153); background-color:inherit; font-weight:bold">intnewVersion){
- "onUpgrade");
- }
1。使用ContentValues插入。完成时间:4805493666(纳秒)
copy
@H_403_15@
@H_403_15@
@H_403_15@
2。使用基本slq语句插入。完成时间:3734808485(纳秒)
- /**
- *ContentValues方式
- *
- *@paramsum
- *@return
- */
- longinsert1(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",0); background-color:inherit">1.78);
- cv.put("remark","无");
- db.insert("user",cv);
- db.close();
- longafter=System.nanoTime();
- returnafter-before;
- }
2。使用基本slq语句插入。完成时间:3734808485(纳秒)
copy
@H_403_15@
@H_403_15@
@H_403_15@
3。使用sqlliteStatement插入。完成时间:4754616203(纳秒)
- longinsert2(0;i<sum;i++){
- Stringsql="insertintouser(name,remark)values('zhangsan',23,1.78,'无')";
- db.execsql(sql);
- longafter=System.nanoTime();
- returnafter-before;
- }
3。使用sqlliteStatement插入。完成时间:4754616203(纳秒)
copy
@H_403_15@
@H_403_15@
@H_403_15@
4。使用一次插入多条的方式。完成时间:245414315(纳秒)
- longinsert3( MysqLiteOpenHelperdbHelper=this);
- //得到数据库对象
- sqliteDatabasedb=dbHelper.getWritableDatabase();
- Stringsql="insertintouser(name,remark)values(?,?,?)";
- sqliteStatementstmt=db.compileStatement(sql);
- stmt.clearBindings();
- stmt.bindString(1,"zhangsan");
- stmt.bindLong(2,0); background-color:inherit">23);
- stmt.bindLong(3,0); background-color:inherit">178);
- stmt.bindString(4,"无");
- stmt.execute();
- }
4。使用一次插入多条的方式。完成时间:245414315(纳秒)
copy
@H_403_15@
@H_403_15@
@H_403_15@
- longinsert4(0;i<sum/10;i++){
- +"('zhangsan',248); line-height:18px; margin:0px!important; padding:0px 3px 0px 10px!important"> +"('zhangsan','无')";
- db.close();
- }
5.使用事务处理插入方式。完成时间:229787881(纳秒)