一.建立表:
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