第一種:用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:前幾天面試被面試官問到過這個問題。
轉載于:https://www.cnblogs.com/Godfunc/p/6022102.html