AndroidのSQLiteの、のonCreate()が呼び出されていません

コナーC:

私は自分のAndroidアプリケーション内でSQLiteのDBを作成するために苦労してきました。私は、多くのチュートリアルを見て、スタックオーバーフローや他のサイトでかなりの数の既存の質問しました。

ここに私のDatabaseHelperクラスがあります

import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import android.util.Log;

public class DatabaseHelper extends SQLiteOpenHelper {

public SQLiteDatabase db;
public static final String DATABASE_NAME = "user.db";

//Module table
public static final String MODULE_TABLE = "modules_table";
public static final String MODULE_COL_1 = "ID";
public static final String MODULE_COL_2 = "CODE";
public static final String MODULE_COL_3 = "TITLE";

public DatabaseHelper(Context context) {
    super(context, DATABASE_NAME, null, 1);
    Log.d("SQL", "SQLite dbhelper");
    db = getWritableDatabase();
}

@Override
public void onCreate(SQLiteDatabase db) {
    //db.execSQL("create table " + MODULE_TABLE + "(" + MODULE_COL_1 + " INTEGER PRIMARY KEY AUTOINCREMENT, " + MODULE_COL_2 + " TEXT, " + MODULE_COL_3 + " TEXT " +")");
    db.execSQL("create table modules_table (ID INTEGER PRIMARY KEY 
AUTOINCREMENT, CODE TEXT, TITLE TEXT)");
    Log.d("SQL", "SQLite onCreate");
}

@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
    db.execSQL("DROP TABLE IF EXISTS " + MODULE_TABLE);
    onCreate(db);
}
}

私は、get SQLiteのdbhelperはlogcatに表示させることができたが、GETのSQLiteのonCreate表示されるようにすることはできません、とDBファイルエクスプローラまたはデバイス自体ではどこでも、両方をエミュレートし、実際のデバイスを見つけることができません。

すべてのヘルプは大歓迎、およびコードのフォーマットについて謝罪することでしょう!

マイク:

私は(下記を使用してお勧めする、一時的に活動中): -

DatabaseHelper myDBHelper = new DatabaseHelper(this); //<<<<<<<<< you appear to already have the equivalent of this line (if so use whatever variable name you have given to the DatabaseHelper object)

Cursor csr = myDBHelper.getWritableDatabase().query("sqlite_master",null,null,null,null,null,null);
DatabaseUtils.dumpCursor(csr);
csr.close();

実行してから、ログを確認してください。あなたは、あなたのために出力表示されるはずですmodules_tableともsqlite_sequenceあなたが自動インクリメントをコード化しているので(後者を。

sqlite_masterは、そのようなスキーマすなわち、テーブルとインデックス名などを記憶するシステム情報は、そのシステム・テーブルです。

追加 - データベースファイルへのアクセス

データベース・ファイルを表示することはできませんので、各アプリケーションのデータを根ざしていないデバイス上で(データ/データ)で保護されています。

エミュレータでは、それはエミュレータに依存します。私は、Androidスタジオのそれ以降のバージョンは、現在のアクセスなどを許可しないと考えています: -

ここでは、画像の説明を入力します。

  • 上記のアンドロイド10.1パイ(API 28)であるため、データベースが先行書き込みログ(WAL)を持っているので、-shmと-walファイルが存在しても注意してください。

  • パッケージはmjt.pvcheckです。完全なパスは、データ/データ/ mjt.pvcheck /データベースです。

    • あなたが見ることができるようにキャッシュディレクトリを、その後、私はいくつかの理由で、おそらく失敗、データベースが存在しないためにそれをお勧めしますが、あたりとしてのアクセス権を持っているように見えますが唯一のサブフォルダエクスプローラ仮想デバイスファイルを介して確認する時に私は私のパッケージ内にキャッシュされてい
    • おそらく、あなたはデータベースを見ていないもう一つの理由とすることができる、(それが更新されないように、デバイスを再選択し、デバイスエクスプローラで音符)デバイス上で再実行してみてください。

おすすめ

転載: http://43.154.161.224:23101/article/api/json?id=190394&siteId=1