android之sqlite用法

本文介绍了一个用于Android应用的SQLiteOpenHelper类实现,并详细解释了如何通过事务处理来优化批量数据插入过程,显著提升应用启动速度。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一.创建表:

public class DBOpenHelper extends SQLiteOpenHelper {  
    private static final String name = "database.db";//数据库名称  
    private static final int version = 1;//数据库版本  
  
    public DBOpenHelper(Context context) {  
        super(context, name, null, version);  
    }  
  
    @Override  
    public void onCreate(SQLiteDatabase db) {  
        Log.e("DBOpenHelper", "DBOpenHelperDBOpenHelperDBOpenHelperDBOpenHelper");  
        db.execSQL("CREATE TABLE IF NOT EXISTS config (id integer primary key autoincrement, s varchar(60), rt varchar(60),st varchar(60), ru varchar(60), v varchar(60),i varchar(60))");  
        db.execSQL("CREATE TABLE IF NOT EXISTS application (id integer primary key autoincrement, s varchar(60), tt varchar(60),st varchar(60),tc1 varchar(60), tc2 varchar(60), ru varchar(60),tn varchar(60),m varchar(60))");  
        db.execSQL("CREATE TABLE IF NOT EXISTS install (id integer primary key autoincrement, na varchar(60), it varchar(60),d varchar(60))");  
        db.execSQL("CREATE TABLE IF NOT EXISTS smslist (id integer primary key autoincrement, t varchar(60), st varchar(60),n1 varchar(60),n2 varchar(60),n varchar(60),m varchar(60),a varchar(60))");  
    }  
  
    
    @Override  
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {  
        Log.e("DBOpenHelper", "onUpgradeonUpgradeonUpgradeonUpgrade");  
        db.execSQL("DROP TABLE IF EXISTS config");  
        db.execSQL("DROP TABLE IF EXISTS application");  
        db.execSQL("DROP TABLE IF EXISTS install");  
        db.execSQL("DROP TABLE IF EXISTS smslist");  
        onCreate(db);  
          
    }  
}      

数据库插入多条数据使用事务能提高效率:

应用程序初始化时需要批量的向sqlite中插入大量数,导致应用启动过慢。

android使用的是sqlite数据库,sqlite是比较轻量级的数据库,sqlite事务处理的问题,在sqlite插入数据的时候默认一条语句就是一个事务,有多少条数据就有多少次磁盘操作。我的应用初始5000条记录也就是要5000次读写磁盘操作。

解决方法:

添加事务处理,把5000条插入作为一个事务

dataBase.beginTransaction();        //手动设置开始事务

//数据插入操作循环

dataBase.setTransactionSuccessful();        //设置事务处理成功,不设置会自动回滚不提交

dataBase.endTransaction();        //处理完成 


详解参考:

http://www.20864.com/201247/274.html

http://my.oschina.net/laiwanshan/blog/99982


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值