先贴上SQLiteOpenHelper的代码,我们创建测试的表是user,它有四个字段id,name,age,height,remark,测试用的小米2,默认条数为100行。
- //MySQliteOpenHelper作为一个访问SQLite的帮助类,提供两方面的功能
- //1.getReadableDatabase(),getWritableDatabase()可以获得SQLiteDatatbase对象,
- //对这个对象进行相关操作
- //2.提供了onCreate()和onUpgrade()两个回调函数,允许我们在创建和升级数据库时进行操作
- publicclassMySQLiteOpenHelperextendsSQLiteOpenHelper{
-
- publicstaticfinalStringDATABASE_NAME="test.db";
-
- publicstaticfinalStringTAG="MySQLiteOpenHelper";
-
- publicMySQLiteOpenHelper(Contextcontext){
- this(context,DATABASE_NAME,null,1);
- }
-
- publicMySQLiteOpenHelper(Contextcontext,intversion){
- this(context,version);
- }
-
- //必须要有这一个构造方法
- publicMySQLiteOpenHelper(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();
-
- 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;
- }
(编辑:李大同)
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!
|