1 回答

TA貢獻1828條經驗 獲得超4個贊
根據代碼,您不是在訪問(打開)數據庫。您只是在主活動中實例化數據庫幫助器,即mydb = new CrdDBHelper(this);
直到嘗試打開數據庫(通常是隱式的),才實際創建了數據庫。
一種簡單的方法是在實例化數據庫時強制打開。例如,在構造函數中調用可寫數據庫() 方法,如 :-
public CrdDBHelper(@Nullable Context context) {
super(context, DATABASE_NAME, null, DATABASE_VERSION);
getWritableDatabase();
}
也許在那個時候設置一個SQLite數據庫對象與返回的SQLite數據庫,所以你的數據庫助手(CrdDB助手.java)可以是:-
public class CrdDBHelper extends SQLiteOpenHelper {
public static final String DATABASE_NAME = "CardGame.db";
public static final int DATABASE_VERSION = 1;
SQLiteDatabase mDB;
public CrdDBHelper(@Nullable Context context) {
super(context, DATABASE_NAME, null, DATABASE_VERSION);
mDB = this.getWriteableDatabase();
}
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL(CrdDBContract.GameEntry.SQL_CREATE_TABLE);
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
}
}
因為 onCreate 方法在創建數據庫時(并且僅在創建數據庫時)調用,因此將創建游戲表。
添加回答
舉報