2013-04-07 4 views
0

Привет, я создаю приложение, в котором хранится пароль пользователя. и всякий раз, когда ему нужно сменить пароль, данные должны быть изменены. Проблема, с которой я сталкиваюсь, заключается в том, что я вызываю класс DBHelper (я создал для работы с моей базой данных), не удаляя таблицу, если она доступна.Обновление версии базы данных автоматически

Это будет более полезно, если кто-нибудь скажет мне, как удалить записи в таблице при вызове класса DBHelper.

Я понял, что функции OnCreate и OnUpgrade не выполняются, кроме первого раза при создании базы данных.

также изменение версии базы данных автоматически также помогает, я думаю, но я не знаю, как это сделать ?? вот мой код из DBhelper класса

public void onCreate(SQLiteDatabase db) { 
     // TODO Auto-generated method stub 
      db.execSQL("DROP TABLE IF EXISTS '" + DATABASE_TABLE+"'"); 
      db.execSQL("CREATE TABLE " + DATABASE_TABLE +" (" + 
       KEY_ROWID + " INTEGER PRIMARY KEY AUTOINCREMENT, "+ 
       KEY_ID +" INTEGER, "+ 
       KEY_X +" INTEGER, "+ 
       KEY_Y +" INTEGER);" 
       ); 

    } 

    @Override 
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { 
     // TODO Auto-generated method stub 
     db.execSQL("DROP TABLE IF EXISTS '" + DATABASE_TABLE+"'"); 
     onCreate(db); 
    } 

public long createEntry(int name, int sx, int sy) { 
     // TODO Auto-generated method stub 
     ContentValues cv=new ContentValues(); 
     cv.put(KEY_ID, name); 
     cv.put(KEY_X, sx); 
     cv.put(KEY_Y, sy); 
     return ourDatabase.insert(DATABASE_TABLE, null, cv); 
    } 
+1

Простое увеличение версии базы данных должно сделать трюк. (знаю его поздно). –

ответ

2

Изменение строки в базе данных не должно влиять на версию схемы. Это должно быть выполнено как правильные запросы для манипулирования записями базы данных.

Вы могли бы найти применение этого метода:

public void clearDatabase(Context context) { 
    DatabaseHelper helper = new DBHelper(context); 
    SQLiteDatabase database = helper.getWritableDatabase(); 
    database.delete(DATABASE_TABLE, null, null); //erases everything in the table. 
    database.close(); 
} 
+0

Это не отвечает на вопрос, поэтому он не выполняет. –

1

Первый всего здесь, как вы можете изменить версию базы данных программно и, следовательно, заставить SQLiteOpenHelper вызвать onUpgrade() на следующий вызов, чтобы открыть базу данных :

db.execSQL("PRAGMA user_version = " + NEW_VERSION);

Второй, я не рекомендую использовать эту techniqu е. Я написал этот ответ только потому, что вы спросили о том, как это сделать. Это твой выбор. Для меня я сделаю это по-своему @Boris Strandjev рекомендует в своем ответе.

Смежные вопросы