文章出處

第一種:用SQLiteOpenHelper輔助類

  SQLiteOpenHelper類可以用來創建或打開數據庫,兩個關鍵的方法:onCreate(SQLiteDatabase db)和onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion)。當新建一個數據庫時會調用前者,一般在里面做一些創建表或視圖的操作。數據庫版本升級時則會調用后者。

  當第一次調用getReadableDatabase()方法或getWritableDatabase()方法即可返回一個SQLiteDatabase對象。如果是第一次調用,則會創建數據庫。隨后可使用SQLiteDatabase對象的方法進行數據操作,如:execSQL(), insert(), update(), query(), rawQuery(), delete()等。

  PS:通過該方法創建的數據庫存放的目錄是固定的,其路徑為/data/data/packageName/databases/

 

第二種:用Context類的openOrCreateDatabase()方法

  openOrCreateDatabase(String dbName, int mode, CursorFactory factory);

  dbName:數據庫操作模式:默認值為MODE_PRIVATE(0),可選值:MODE_WORLD_READABLE, MODE_WORLD_WRITABLE, MODE_ENABLE_WRITE_AHEAD_LOGGING

  factory:附加的一個工廠類,當SQLiteDatabase實例的query函數被調用時,會使用該工廠類返回一個Cursor。可為null。

PS:該方法得到的數據庫文件,其存儲路徑與上一方法相同。

 

第三種:直接調用SQLiteDatabase類的靜態方法openOrCreateDatabases()

SQLiteDatabase類有幾個靜態方法可直接打開或創建數據庫。

//等同于openDatabase(path, factory, SQLiteDatabase.CREATE_IF_NECESSARY)

openOrCreateDatabase(String path, CursorFactory factory)

//等同于openDatabase(file.getPath(), factory, SQLiteDatabase.CREATE_IF_NECESSARY)

openOrCreateDatabase(File file, CursorFactory factory)

//等同于openDatabase(file.getPath(), factory, SQLiteDatabase.CREATE_IF_NECESSARY, errorHandler)

openOrCreateDatabase(String path, CursorFactory factory, DatabaseErrorHandler errorHandler)

PS:該方法打開或創建的數據庫文件可與上述兩個方法的路徑不同。

 

還是上個代碼看著更爽

 1 //第一種
 2         SQLiteDatabase db = mySqliteOpenHelper.getReadableDatabase();
 3         db.execSQL("alter table info add number1 vchar(20)");
 4 
 5         //第二種
 6         //獲取info.db的路徑
 7         File file = new File(getApplication().getDatabasePath("info.db").getPath());
 8         SQLiteDatabase db1 = SQLiteDatabase.openOrCreateDatabase(file,null);
 9         db1.execSQL("alter table info add number2 vchar(20)");
10 
11         //第三種,
12         SQLiteDatabase db2 = this.openOrCreateDatabase("info.db",0,null);
13         db.execSQL("alter table info add number3 vchar(20)");

 

 

 

ps:前幾天面試被面試官問到過這個問題。


文章列表




Avast logo

Avast 防毒軟體已檢查此封電子郵件的病毒。
www.avast.com


arrow
arrow
    全站熱搜
    創作者介紹
    創作者 大師兄 的頭像
    大師兄

    IT工程師數位筆記本

    大師兄 發表在 痞客邦 留言(0) 人氣()