博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Android利用SQLiteStatement提高数据库插入数据的效率
阅读量:5940 次
发布时间:2019-06-19

本文共 5744 字,大约阅读时间需要 19 分钟。

MainActivity如下:package cc.testdb;import cc.database.DBUtils;import cc.domain.Person;import android.os.Bundle;import android.view.View;import android.view.View.OnClickListener;import android.view.Window;import android.view.WindowManager;import android.widget.Button;import android.app.Activity;/** * Demo描述: * 利用SQLiteStatement提高数据库插入数据的效率 *  * 测试说明: * 我们分别采用两种方式来插入大量数据(此处为2000条数据) * 方式一: * 利用execSQL插入数据 * 方式二: * 利用SQLiteStatement插入数据 *  * 我们分别计算两种方式的耗时进行比较,可以发现在插入2000条数据时候 * 方式二比方式一大概可节约5秒钟以上的时间. *  * 参考资料: * http://liuzhichao.com/p/1664.html * Thank you very much * */public class MainActivity extends Activity {    private DBUtils mDBUtils;    private Button mFirstInsertButton;    private Button mSecondInsertButton;       @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        requestWindowFeature(Window.FEATURE_NO_TITLE);        getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,                             WindowManager.LayoutParams.FLAG_FULLSCREEN);        setContentView(R.layout.main);        init();    }        private void init(){                mFirstInsertButton=(Button) findViewById(R.id.firstInsertButton);        mFirstInsertButton.setOnClickListener(new ClickListenerImpl());                mSecondInsertButton=(Button) findViewById(R.id.secondInsertButton);        mSecondInsertButton.setOnClickListener(new ClickListenerImpl());    }            private class ClickListenerImpl implements OnClickListener {        Person person=null;        @Override        public void onClick(View v) {            mDBUtils=new DBUtils(MainActivity.this);            switch (v.getId()) {            case R.id.firstInsertButton:                new Thread(){                    public void run() {                        long startTime=System.currentTimeMillis();                        for (int i = 0; i < 2000; i++) {                            person=new Person("xiaoming"+i, "9527"+i);                            mDBUtils.addDataByExecSQL(person);                        }                        long endTime=System.currentTimeMillis();                        System.out.println("第一种方式耗时:"+(endTime-startTime)/1000);                    };                }.start();                                break;            case R.id.secondInsertButton:                new Thread(){                    public void run() {                        long startTime=System.currentTimeMillis();                        for (int i = 0; i < 2000; i++) {                            person=new Person("xiaoming"+i, "9527"+i);                            mDBUtils.addDataBySQLiteStatement(person);                        }                        long endTime=System.currentTimeMillis();                        System.out.println("第二种方式耗时:"+(endTime-startTime)/1000);                    };                }.start();                break;            default:                break;            }        }    }}DBUtils如下:package cc.database;import android.content.Context;import android.database.sqlite.SQLiteDatabase;import android.database.sqlite.SQLiteStatement;import cc.domain.Person;public class DBUtils {    private DataBaseOpenHelper openHelper;    public DBUtils(Context context) {        openHelper=new DataBaseOpenHelper(context);    }        public void initDataBase(Context context){        openHelper=new DataBaseOpenHelper(context);        openHelper.getWritableDatabase();    }        public void addDataByExecSQL(Person person){        SQLiteDatabase db=openHelper.getWritableDatabase();        db.execSQL("insert into person (name,phone) values(?,?)",                    new Object[]{person.getName(),person.getPhone()});            }        public void addDataBySQLiteStatement(Person person){        SQLiteDatabase db=openHelper.getWritableDatabase();        SQLiteStatement sqLiteStatement=         db.compileStatement("insert into person (name,phone) values(?,?)");        sqLiteStatement.bindString(1, person.getName());        sqLiteStatement.bindString(2, person.getPhone());        sqLiteStatement.executeInsert();    }    }DataBaseOpenHelper如下:package cc.database;import android.content.Context;import android.database.sqlite.SQLiteDatabase;import android.database.sqlite.SQLiteOpenHelper;public class DataBaseOpenHelper extends SQLiteOpenHelper {    private final static String DATABASE_NAME="test.db";    public DataBaseOpenHelper(Context context) {        super(context, DATABASE_NAME, null, 1);    }    @Override    public void onCreate(SQLiteDatabase db) {        db.execSQL("create table person(personid integer primary key autoincrement,name varchar(20),phone VARCHAR(12))");    }    //为person增加一个address字段,默认值为null    @Override    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {        db.execSQL("ALTER TABLE person ADD address VARCHAR(12) NULL");    }}Person如下:package cc.domain;public class Person {    private Integer id;    private String name;    private String phone;        public Person(String name, String phone) {        this.name = name;        this.phone = phone;    }    public Person(Integer id, String name, String phone) {        this.id = id;        this.name = name;        this.phone = phone;    }    public Integer getId() {        return id;    }    public void setId(Integer id) {        this.id = id;    }    public String getName() {        return name;    }    public void setName(String name) {        this.name = name;    }    public String getPhone() {        return phone;    }    public void setPhone(String phone) {        this.phone = phone;    }    @Override    public String toString() {        return "Person [id=" + id + ", name=" + name + ", phone=" + phone + "]";    }    } main.xml如下:

 

转载地址:http://hdmtx.baihongyu.com/

你可能感兴趣的文章
Integer跟int的区别(备份回忆)
查看>>
集合解析
查看>>
详解分布式应用程序协调服务Zookeeper
查看>>
软件工程之构建之法
查看>>
UVa 10902
查看>>
Mathf.Sin正弦
查看>>
禁止浏览器缓存js
查看>>
【Redis】安装PHP的redis驱动(二)
查看>>
java中string和int互相转化
查看>>
什么是序列化,为什么要序列化
查看>>
Java保留小数点后有效数字
查看>>
新学期的合作
查看>>
C++中一些类和数据结构的大小的总结
查看>>
mysql开启binlog
查看>>
ctrl + z fg bg
查看>>
工作流引擎Oozie(一):workflow
查看>>
struct框架
查看>>
Deep Learning(深度学习)相关网站
查看>>
设置Eclipse编码方式
查看>>
分布式系统唯一ID生成方案汇总【转】
查看>>