[英]How can SQLiteOpenHelper return SQLiteDatabase?
我知道SQLiteDatabase沒有任何公共構造函數,因此無法直接創建其對象。
但是, SQLiteOpenHelper如何使用getReadableDatabase()或getWritableDatabase()返回SQLiteDatabase引用?
僅僅因為構造函數不是public / visible並不意味着它不存在!
SQLiteOpenHelper
使用SQLiteDatabase
的靜態構造函數openDatabase
創建一個新的數據庫實例。 它是公開的,並且沒有被隱藏,因此,盡管這可能不是一個好主意,但您可以自己直接調用它。
根據文檔,您可以這樣使用它:
SQLiteDatabase db = SQLiteDatabase.openDatabase(path, null);
第一個參數是一個字符串,它提供新數據庫的完整路徑名。 第二個是游標工廠。 為第二個arg傳遞null將為您提供默認工廠。
使用SQLiteOpenHelper
確保正確創建和正確初始化數據庫。 它還會適當地緩存數據庫實例,這樣就不會在您每次需要它們時都重新創建它們。 最好使用它。
嘗試這個:
Cdb.java類:
public class Cdb extends SQLiteOpenHelper {
private static final String DB_NAME = "db_name.db";
public static final int DB_VERSION = 1;
Cdb(Context context) {
super(context.getApplicationContext(), DB_NAME, null, DB_VERSION);
}
@Override
public void onCreate(SQLiteDatabase db) {
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion){
// Upgrade here
}
@Override
public void onOpen(SQLiteDatabase db) {
super.onOpen(db);
}
然后您可以按以下方式訪問數據庫:
Cdb openHelper = new Cdb(this);
SQLiteDatabase db = openHelper.getReadableDatabase();
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.