2013-05-15 37 views
8

tôi thêm vào DB của tôi bảng gọi là "MEDIA_TABLE" và tôi đã nhận mã lỗi sau:SQLiteException: bảng đã tồn tại

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

bảng thứ hai của tôi hoạt động tốt.

tôi đã cố gỡ cài đặt ứng dụng của mình và cài đặt ứng dụng và nó sẽ không hoạt động, có thể có giới hạn bảng trong DB không?

Đây là mã onCreate của tôi:

@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); 
} 

Trả lời

33

Bạn nên sử dụng CREATE TABLE IF NOT EXISTS thay vì CREATE TABLE. Mã của bạn sau đó sẽ trông như thế này:

@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

không hoạt động = \ – tomer

+0

bạn nên thay đổi tất cả các câu lệnh tạo như thế này. – Triode

+0

Tôi đã làm. Nhìn vào bài viết của tôi chỉnh sửa. – tomer

1

sử dụng cách này

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

không hoạt động = \ – tomer

0

Bạn đang chạy cùng một chương trình một lần nữa và một lần nữa và cùng một bảng tồn tại trong cơ sở dữ liệu. Bạn cần phải sửa đổi truy vấn Tạo bảng của bạn. Hãy thử điều này "tạo bảng nếu không tồn tại TABLE_NAME"

+0

didnt worked = \ – tomer

Các vấn đề liên quan