2012-05-14 6 views
0

Я не могу обновить базу данных андроида:обновление базы данных SQLite андроид устройство

public class database extends SQLiteOpenHelper { 

// Database creation sql statement 
private static final String DATABASE_NAME = "myDatabase"; 
private static final String DATABASE_CREATE_login = "CREATE TABLE login (userJoomla INTEGER, idUSER INTEGER PRIMARY KEY, name varchar(20), email varchar(50))"; 
private static final String DATABASE_CREATE_position = "CREATE TABLE position(latitude VARCHAR(20), longitude VARCHAR(20), address VARCHAR(100), lastUpdate DATETIME)"; 
private static final String DATABASE_CREATE_favorites = "CREATE TABLE favorites(_id INTEGER PRIMARY KEY AUTOINCREMENT, idSPB INTEGER UNIQUE NOT NULL)"; 
private static final int DATABASE_VERSION = 2; 


public database(Context context) { 
    super(context, DATABASE_NAME, null, DATABASE_VERSION); 
} 

@Override 
public void onCreate(SQLiteDatabase db) { 
    // Create the table 
    db.execSQL(DATABASE_CREATE_login);  
    db.execSQL(DATABASE_CREATE_position); 
    db.execSQL(DATABASE_CREATE_favorites); 

} 


// Method is called during an upgrade of the database, e.g. if you increase 
// the database version 
@Override 
public void onUpgrade(SQLiteDatabase database, int oldVersion,int newVersion) { 
    Log.w(database.class.getName(),"Upgrading database from version " + oldVersion + " to " + newVersion + ", which will destroy all old data"); 
    database.execSQL("DROP TABLE IF EXISTS " + DATABASE_NAME); 
    onCreate(database); 
} 

}

Исключение я поймал было:

Can't upgrade read-only database from version 1 to 2: 

я прочитал здесь, что она должна быть решена с;

db = fav.getWritableDatabase(); 

Но теперь у меня есть эта ошибка:

table login already exists. 

Что я должен делать?

Спасибо заранее

ответ

2

Вы делаете database.execSQL("DROP TABLE IF EXISTS " + DATABASE_NAME);, т.е .:

DROP TABLE IF EXISTS myDatabase 

Изменить его правильное имя таблицы вместо этого.

DROP TABLE IF EXISTS login 
2

Вы сбросив базу данных, а не таблицы.

database.execSQL("DROP TABLE IF EXISTS " + DATABASE_NAME); 
Смежные вопросы