Android SQLite, onCreate () no se llama

Connor C:

He estado luchando para crear una base de datos SQLite dentro de mi aplicación para Android. He mirado en numerosos tutoriales, y un buen número de preguntas existentes en desbordamiento de pila y otros sitios.

Aquí está mi clase 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);
}
}

Me las he arreglado para obtener SQLite dbhelper a aparecer en Logcat, pero no puedo conseguir SQLite onCreate a aparecer, y no puedo encontrar en cualquier lugar de la db en el explorador de archivos o el propio dispositivo, tanto el dispositivo emulado y real.

Cualquier ayuda sería muy apreciada, y disculpas por el formateo del código!

Mike:

Me gustaría sugerir el uso de la siguiente ( temporalmente ) en la actividad: -

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();

Ejecutar y luego comprobar el registro. Debería ver una salida para su modules_table y también sqlite_sequence (este último, ya que han codificado incremento automático.

sqlite_master es una tabla del sistema que la información del sistema tiendas, tales como nombres de tabla y de índice, es decir, el esquema.

Adicional - el acceso a la base de datos de archivo

En un dispositivo que no tiene su origen de cada aplicación de datos (datos / datos) está protegido por lo que no será capaz de ver el archivo de base de datos.

En un emulador, que depende del emulador. Creo que las versiones posteriores del estudio Android ahora no permiten el acceso por ejemplo: -

introducir descripción de la imagen aquí

  • Tenga en cuenta lo anterior es Android 10.1 Pie (API 28) y por lo tanto la base de datos tiene registro de escritura anticipada (WAL) y por lo tanto la -shm y archivos -wal también existen.

  • El paquete es mjt.pvcheck. La ruta completa es de datos / datos / mjt.pvcheck / bases de datos.

    • Como se puede ver caché de directorio, entonces yo sugeriría que por alguna razón, tal vez un fracaso, la base de datos no existe, pero que no parecen tener acceso según embargo al hacer el registro a través del archivo de dispositivo virtual explorador de la única subcarpeta tengo dentro de mi paquete es el caché .
    • Tal vez, intente volver a ejecutar en el dispositivo (nota en el explorador de dispositivo vuelva a seleccionar el dispositivo, ya que no se actualiza), que puede ser otra razón por la que no viste la base de datos.

Supongo que te gusta

Origin http://43.154.161.224:23101/article/api/json?id=190399&siteId=1
Recomendado
Clasificación