亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

我無法讓應用程序構造 sqlite 數據庫

我無法讓應用程序構造 sqlite 數據庫

慕斯709654 2022-09-22 15:49:04
你好,因為標題說我無法讓應用程序構建一個小型的本地sqlite數據庫。我很感激一些幫助,因為我是一個業余愛好者。提前致謝。下面是我的源代碼的一些圖片。我在24級API設備上測試了此代碼,但數據庫未出現在數據/數據/the_package/數據庫/文件夾中已編輯以包含代碼主要活動.javapublic class MainActivity extends AppCompatActivity {    private CrdDBHelper mydb;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        mydb = new CrdDBHelper(this);        boolean p1 = true;        int p11sc = 0;        int p12sc = 0;        Button btnMenu = (Button) findViewById(R.id.btnMenu);        Button btntrue = (Button) findViewById(R.id.btnTrue);        Button btnFalse = (Button) findViewById(R.id.btnFalse);        // All other available code commented out    }    @Override    protected void onDestroy() {        mydb.close();        super.onDestroy();    }}合同.javapublic final class CrdDBContract {    private CrdDBContract(){}    public static final class GameEntry implements BaseColumns {        public static final String TABLE_NAME = "Game";        public static final String COLUMN_KNOWN = "Known";        public static final String COLUMN_TBF = "TBF";        public static final String SQL_CREATE_TABLE =                "CREATE TABLE " + TABLE_NAME + "("                        + _ID + " INTEGER PRIMARY KEY, "                        + COLUMN_KNOWN + " TEXT NOT NULL, "                        + COLUMN_TBF + " TEXT NOT NULL)";    }}克爾德貝克助手.javapublic class CrdDBHelper extends SQLiteOpenHelper {    public static final String DATABASE_NAME = "CardGame.db";    public static final int DATABASE_VERSION = 1;    public CrdDBHelper(@Nullable Context context) {        super(context, DATABASE_NAME, null, DATABASE_VERSION);    }    @Override    public void onCreate(SQLiteDatabase db) {        db.execSQL(CrdDBContract.GameEntry.SQL_CREATE_TABLE);    }    @Override    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {    }}
查看完整描述

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 方法在創建數據庫時(并且僅在創建數據庫時)調用,因此將創建游戲表。


查看完整回答
反對 回復 2022-09-22
  • 1 回答
  • 0 關注
  • 117 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號