Join FlipAndroid.COM Telegram Group: https://t.me/joinchat/F_aqThGkhwcLzmI49vKAiw


Problemas en la creación de varias tablas en sqlite

Estoy utilizando el siguiente código para crear varias tablas en una base de datos. Pero, no entiendo por qué ocurre este problema.

private static final String TABLE_SMSFilter = "SMSFilter"; public void onCreate(SQLiteDatabase db) { Log.d("Test", "Control is in Oncreate()"); String CREATE_SMSSSCHEDULE_TABLE = "CREATE TABLE " + TABLE_SMSSchedule + "(" + KEY_ID + " INTEGER PRIMARY KEY autoincrement," + KEY_NUMBER + " TEXT)"; String CREATE_PROFILE_SCHEDULE_TABLE = "CREATE TABLE " + TABLE_ProfileSchedule + "(" + ProfileSchedule_ID + " INTEGER PRIMARY KEY autoincrement," + ProfileSchedule_NUMBER + " TEXT, " + ProfileSchedule_ProfileMode + " TEXT," + ProfileSchedule_CalendarID + "INTEGER)"; String CREATE_SMS_FILTER_TABLE = "CREATE TABLE " + TABLE_SMSFilter + "(" + SMSFilter_ID + " INTEGER PRIMARY KEY autoincrement," + SMSFilter_NUMBER + " TEXT)"; db.execSQL(CREATE_SMSSSCHEDULE_TABLE); db.execSQL(CREATE_PROFILE_SCHEDULE_TABLE); db.execSQL(CREATE_SMS_FILTER_TABLE); } // Upgrading database @Override public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { // Drop older table if existed db.execSQL("DROP TABLE IF EXISTS " + TABLE_SMSSchedule); db.execSQL("DROP TABLE IF EXISTS " + TABLE_ProfileSchedule); db.execSQL("DROP TABLE IF EXISTS " + TABLE_SMSFilter); // Create tables again onCreate(db); } 

Aquí está la función de inserción

 public void addSMSFilter(SMSFilter filterVariable) { SQLiteDatabase db = this.getWritableDatabase(); ContentValues values = new ContentValues(); values.put(SMSFilter_NUMBER, filterVariable.getPhoneNumber()); // Contact // Name // values.put(KEY_PH_NO, contact.getPhoneNumber()); // Contact Phone Log.d("test", "inserting" + filterVariable.getPhoneNumber()); // Inserting Row db.insert(TABLE_SMSFilter, null, values); db.close(); // Closing database connection } 

Y ahora en mi actividad principal, he utilizado este código para insertar en esta tabla

 DatabaseHandler db = new DatabaseHandler(this); SMSFilter sms = new SMSFilter("1234556"); db.addSMSFilter(sms); 

Pero me da el error que ninguna tabla "SMSFILTER" encontró.

Resultado del registro aquí

 11-25 22:52:22.643: I/Database(12209): sqlite returned: error code = 1, msg = no such table: SMSFilter 11-25 22:52:22.643: E/Database(12209): Error inserting PhoneNo=1234556 11-25 22:52:22.643: E/Database(12209): android.database.sqlite.SQLiteException: no such table: SMSFilter: , while compiling: INSERT INTO SMSFilter(PhoneNo) VALUES(?); 11-25 22:52:22.643: E/Database(12209): at android.database.sqlite.SQLiteCompiledSql.native_compile(Native Method) 11-25 22:52:22.643: E/Database(12209): at android.database.sqlite.SQLiteCompiledSql.compile(SQLiteCompiledSql.java:91) 11-25 22:52:22.643: E/Database(12209): at android.database.sqlite.SQLiteCompiledSql.<init>(SQLiteCompiledSql.java:64) 11-25 22:52:22.643: E/Database(12209): at android.database.sqlite.SQLiteProgram.<init>(SQLiteProgram.java:80) 11-25 22:52:22.643: E/Database(12209): at android.database.sqlite.SQLiteStatement.<init>(SQLiteStatement.java:36) 11-25 22:52:22.643: E/Database(12209): at android.database.sqlite.SQLiteDatabase.compileStatement(SQLiteDatabase.java:1212) 11-25 22:52:22.643: E/Database(12209): at android.database.sqlite.SQLiteDatabase.insertWithOnConflict(SQLiteDatabase.java:1610) 11-25 22:52:22.643: E/Database(12209): at android.database.sqlite.SQLiteDatabase.insert(SQLiteDatabase.java:1484) 11-25 22:52:22.643: E/Database(12209): at com.scheduler.database.DatabaseHandler.addSMSFilter(DatabaseHandler.java:327) 11-25 22:52:22.643: E/Database(12209): at com.schedule.test.TestActivity.onCreate(TestActivity.java:31) 11-25 22:52:22.643: E/Database(12209): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1069) 11-25 22:52:22.643: E/Database(12209): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2751) 11-25 22:52:22.643: E/Database(12209): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2803) 11-25 22:52:22.643: E/Database(12209): at android.app.ActivityThread.access$2300(ActivityThread.java:135) 11-25 22:52:22.643: E/Database(12209): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2136) 11-25 22:52:22.643: E/Database(12209): at android.os.Handler.dispatchMessage(Handler.java:99) 11-25 22:52:22.643: E/Database(12209): at android.os.Looper.loop(Looper.java:144) 11-25 22:52:22.643: E/Database(12209): at android.app.ActivityThread.main(ActivityThread.java:4937) 11-25 22:52:22.643: E/Database(12209): at java.lang.reflect.Method.invokeNative(Native Method) 11-25 22:52:22.643: E/Database(12209): at java.lang.reflect.Method.invoke(Method.java:521) 11-25 22:52:22.643: E/Database(12209): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:858) 11-25 22:52:22.643: E/Database(12209): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616) 11-25 22:52:22.643: E/Database(12209): at dalvik.system.NativeStart.main(Native Method) 

  • Android SQLite select * de la tabla donde nombre como% key% usando instrucciones preparadas
  • Creación de una clase de modelo de datos para el manejo de bases de datos
  • Clave Extranjera de SQLite
  • Android Room: ¿Cómo modelar las relaciones?
  • Consulta de actualización de base de datos SQLite con múltiples condiciones de ubicación en Android
  • Qué son los tipos de datos en SQLite que soportan android
  • Android Studios: Android Device Manager no muestra archivos para Nougat 7.0 en el Explorador de archivos
  • Especificar el tamaño de sqlite db máximo para mi aplicación. Cómo manejar db completa excepción
  • 3 Solutions collect form web for “Problemas en la creación de varias tablas en sqlite”

    onUpgrade se llama cuando se databse version number . Al actualizar su tabla necesita incrementar el version number base de datos, especificar una nueva consulta de creación de tablas en el método onCreate y poner ALTER TABLE al método onUpgrade para actualizar la versión anterior de la tabla. Cuando Android detecta desajuste de versión de base de datos, llamará onUpgrade método onUpgrade automáticamente

    Tenga en cuenta que onCreate sólo se llama la primera vez que se crea el archivo físico de la base de datos. Parece que el método onCreate no se llama porque la base de datos ya existe en algún lugar de la tarjeta SD. Por lo tanto, la tabla SMSFilter no se crea. Necesita copiar el código dentro de onCreate al método onUpgrade (después de los comandos de la tabla de soltar). Además, para activar onUpgrade debe aumentar la versión de la base de datos.

     String CREATE_PROFILE_SCHEDULE_TABLE = "CREATE TABLE " + TABLE_ProfileSchedule + "(" + ProfileSchedule_ID + " INTEGER PRIMARY KEY autoincrement," + ProfileSchedule_NUMBER + " TEXT, " + ProfileSchedule_ProfileMode + " TEXT," + ProfileSchedule_CalendarID + "INTEGER)"; 

    Actualizar esto a

     String CREATE_PROFILE_SCHEDULE_TABLE = "CREATE TABLE " + TABLE_ProfileSchedule + "(" + ProfileSchedule_ID + " INTEGER PRIMARY KEY autoincrement," + ProfileSchedule_NUMBER + " TEXT, " + ProfileSchedule_ProfileMode + " TEXT," + ProfileSchedule_CalendarID + " INTEGER)"; 

    Su tabla de programación crear código no está funcionando como en la última línea sin espacio b / w entero y el nombre de columna está creando problema.

    FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.