Sto usando il seguente codice per creare più tabelle in un database. Ma, non capisco perché questo problema si verifica.problemi nella creazione di più tabelle in sqlite
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);
}
qui è la funzione di inserimento
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
}
e ora nella mia attività principale, ho usato questo codice da inserire in questa tabella
DatabaseHandler db = new DatabaseHandler(this);
SMSFilter sms = new SMSFilter("1234556");
db.addSMSFilter(sms);
ma mi dà l'errore che non tabella "SMSFILTER" trovata.
risultato Log è qui
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)
Cosa dice tutto il LogCat? – Ahmad
@Ahmad guarda la domanda aggiornata –
Hai provato a disinstallare l'app e quindi a reinstallarla? – Luksprog