Обновление версии базы данных автоматически
Привет, я создаю приложение, которое хранит пароль пользователя, входящего. и всякий раз, когда ему нужно изменить свой пароль, данные должны быть изменены. Проблема, с которой я сталкиваюсь, заключается в том, что, когда я вызываю класс 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);
}
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();
}
Прежде всего, вот как вы можете программно изменить версию базы данных и, следовательно, заставить SQLiteOpenHelper
звонить onUpgrade()
на следующий звонок, чтобы открыть базу данных:
db.execSQL("PRAGMA user_version = " + NEW_VERSION);
Во-вторых, я не рекомендую использовать эту технику. Я только написал этот ответ, потому что вы спросили о том, как сделать это таким образом. Это твой выбор. Я сделаю это так, как рекомендует @Boris Strandjev в своем ответе.