SQLiteOpenHelper是一個抽象類,要使用它必須寫一個類繼承它。SQLiteOpenHelper有兩個抽象方法onCreate()和onUpgrade(),咱們要在類裏面重寫這兩個方法來實現建立和更新數據庫。java
SQLiteOpenHelper類裏還有兩個重要實例的方法getReadableDatabase和getWritableDatabase(),這兩個方法均可以打開或者建立一個數據庫。不一樣的是,當數據庫不可寫入的時候,例如磁盤空間已滿的時候,getReadableDatabase()方法以只讀的形式打開數據庫,而getWritableDatabase()方法會出現異常。數據庫
重寫SQLiteOpenHelper類的兩個構造方法通常使用參數少的那個,它接受四個參數,第一個參數爲context上下文,第二個參數是表名,第三個參數容許咱們在查詢數據的時候返回一個自定義的Cursor,通常傳入null便可。第四個參數是當前數據庫的版本號,可用於對數據庫進行升級。ide
構建出SQLiteOpenHelper的實例以後,再調用它的getReadableDatabase()或者getWritableDatabase()去建立數據庫。blog
eg:繼承
建立一個名字爲MyDatabase.db的數據庫,新建一張User表,表中有id(主鍵),name,password屬性。rem
建立User表的建表語句以下:get
create table User{it
id integer primary key autoincrement,//integr: 整形 primary key:主鍵,惟一鍵 autoincrement:自增加io
name text,//text:文本類型,另外real爲浮點型,blob二進制類型table
password text)
在代碼中執行這條SQL語句,完整以下:
public class MyDatabaseHelper extends SQLiteOpenHelper { public static final String CREATE_USER = "create table uer (" + "id integer primary key autoincrement, " + "name text, " + "password text, " )"; private Context mContext; public MyDatabaseHelper(Context context, String name, CursorFactory factory, int version) { super(context, name, factory, version); mContext = context; } @Override public void onCreate(SQLiteDatabase db) { db.execSQL(CREATE_USER); Toast.makeText(mContext, "Create succeeded", Toast.LENGTH_SHORT).show(); } @Override public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { } }