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 方法在创建数据库时(并且仅在创建数据库时)调用,因此将创建游戏表。
添加回答
举报