2013-05-15 9 views
8

ich meine DB genannt Tabelle hinzugefügt „MEDIA_TABLE“ und ich habe den folgenden Fehlercode:SQLiteException: Tabelle bereits vorhanden ist

05-15 20:56:22.976: E/AndroidRuntime(5968): android.database.sqlite.SQLiteException: table personal_stats already exists (code 1): , while compiling: CREATE TABLE personal_stats (_id INTEGER PRIMARY KEY AUTOINCREMENT, pictures TEXT, videos TEXT); 

Meine zweite Tabelle funktioniert gut.

Ich habe versucht, meine App zu deinstallieren und zu installieren und es wird nicht funktionieren, vielleicht gibt es eine Grenze für Tabellen in der DB?

Hier ist mein onCreate Code:

@Override 
public void onCreate(SQLiteDatabase db) { 
    db.execSQL("CREATE TABLE " + TABLE_NAME + " (" + 
      COLUMN_ID + " INTEGER PRIMARY KEY AUTOINCREMENT, " + 
      COLUMN_DATE + " TEXT, " + 
      COLUMN_EXERCISE + " TEXT, " + 
      COLUMN_WEIGHT + " TEXT, " + 
      COLUMN_REPS + " TEXT, " + 
      COLUMN_SET_TIME + " TEXT, " + 
      COLUMN_WORKOUT_TIME + " TEXT, " + 
      COLUMN_DISTANCE + " TEXT, " + 
      COLUMN_SPEED + " TEXT, " + 
      COLUMN_REST_TIME + " TEXT, " + 
      COLUMN_NUMBER_OF_SETS + " TEXT, " + 
      COLUMN_FIELDS_PARAMETER + " TEXT, " + 
      COLUMN_NOT_ON_LIST_EXERCISE + " TEXT, " + 
      COLUMN_HERAT_BEAT + " TEXT, " + 
      COLUMN_CALORIES + " TEXT, " + 
      COLUMN_COMMENT + " TEXT);"); 

    db.execSQL("CREATE TABLE " + SECOND_TABLE_NAME + " (" + 
      COLUMN_ID + " INTEGER PRIMARY KEY AUTOINCREMENT, " + 
      COLUMN_AGE + " TEXT, " + 
      COLUMN_AGE_PW + " TEXT, " + 
      COLUMN_GENDER + " TEXT, " + 
      COLUMN_HEIGHT + " TEXT, " + 
      COLUMN_HEIGHT_PW + " TEXT, " + 
      COLUMN_BODY_WEIGHT + " TEXT, " + 
      COLUMN_BODY_WEIGHT_PW + " TEXT, " + 
      COLUMN_PROFILE_PIC + " TEXT, " + 
      COLUMN_FAT + " TEXT, " + 
      COLUMN_FAT_PW + " TEXT);"); 

    db.execSQL("CREATE TABLE " + MEDIA_TABLE + " (" + 
      COLUMN_ID + " INTEGER PRIMARY KEY AUTOINCREMENT, " + 
      COLUMN_PICS + " TEXT, " + 
      COLUMN_VIDEO + " TEXT);"); 

}  

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

EDIT : 
@Override 
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { 
    db.execSQL("CREATE TABLE IF NOT EXISTS" + TABLE_NAME); 
    db.execSQL("CREATE TABLE IF NOT EXISTS" + SECOND_TABLE_NAME); 
    db.execSQL("CREATE TABLE IF NOT EXISTS" + MEDIA_TABLE); 
    onCreate(db); 
} 

Antwort

33

Sie sollten CREATE TABLE IF NOT EXISTS statt CREATE TABLE verwenden. Ihr Code aussehen würde dann wie folgt aus:

@Override 
public void onCreate(SQLiteDatabase db) { 
    db.execSQL("CREATE TABLE IF NOT EXISTS" + TABLE_NAME + " (" + 
      COLUMN_ID + " INTEGER PRIMARY KEY AUTOINCREMENT, " + 
      COLUMN_DATE + " TEXT, " + 
      COLUMN_EXERCISE + " TEXT, " + 
      COLUMN_WEIGHT + " TEXT, " + 
      COLUMN_REPS + " TEXT, " + 
      COLUMN_SET_TIME + " TEXT, " + 
      COLUMN_WORKOUT_TIME + " TEXT, " + 
      COLUMN_DISTANCE + " TEXT, " + 
      COLUMN_SPEED + " TEXT, " + 
      COLUMN_REST_TIME + " TEXT, " + 
      COLUMN_NUMBER_OF_SETS + " TEXT, " + 
      COLUMN_FIELDS_PARAMETER + " TEXT, " + 
      COLUMN_NOT_ON_LIST_EXERCISE + " TEXT, " + 
      COLUMN_HERAT_BEAT + " TEXT, " + 
      COLUMN_CALORIES + " TEXT, " + 
      COLUMN_COMMENT + " TEXT);"); 

    db.execSQL("CREATE TABLE IF NOT EXISTS" + SECOND_TABLE_NAME + " (" + 
      COLUMN_ID + " INTEGER PRIMARY KEY AUTOINCREMENT, " + 
      COLUMN_AGE + " TEXT, " + 
      COLUMN_AGE_PW + " TEXT, " + 
      COLUMN_GENDER + " TEXT, " + 
      COLUMN_HEIGHT + " TEXT, " + 
      COLUMN_HEIGHT_PW + " TEXT, " + 
      COLUMN_BODY_WEIGHT + " TEXT, " + 
      COLUMN_BODY_WEIGHT_PW + " TEXT, " + 
      COLUMN_PROFILE_PIC + " TEXT, " + 
      COLUMN_FAT + " TEXT, " + 
      COLUMN_FAT_PW + " TEXT);"); 

    db.execSQL("CREATE TABLE IF NOT EXISTS" + MEDIA_TABLE + " (" + 
      COLUMN_ID + " INTEGER PRIMARY KEY AUTOINCREMENT, " + 
      COLUMN_PICS + " TEXT, " + 
      COLUMN_VIDEO + " TEXT);"); 

}  

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

nicht funktioniert = \ – tomer

+0

Sie sollten alle create-Anweisungen wie folgt ändern. – Triode

+0

tat ich. Sieh dir meine Nachbearbeitung an. – tomer

1

Verwendung auf diese Weise

db.execSQL("create table if not exists table_name(rank int, correct_answer int, optionselect int);"; 
+0

hat nicht funktioniert = \ – tomer

0

Sie führen das gleiche Programm wieder und wieder und die gleiche Tabelle in der Datenbank vorhanden. Sie müssen Ihre Create-Tabellenabfrage ändern. Versuchen Sie diese "Tabelle erstellen, wenn nicht existiert TABELLE_NAME"

+0

hat nicht funktioniert = \ – tomer

Verwandte Themen