Я занимаюсь обновлением своего приложения, целью которого является отправка данных через службу SOAP, моя идея - удалить таблицу при каждом обновлении приложения или удалить переустановка, так что я сделал это:В моей базе данных Android Sqlite хранятся старые данные
private static final int DATABASE_VERSION = 2;
private static final String DATABASE_NAME = "name.db";
private static final String TABLE_DEMANDES = "demandes";
private static final String KEY_ID = "id";
private static final String KEY_XML = "xml";
private static final String KEY_STATUTENVOIE = "statutEnvoie";
private static final String KEY_DATEENVOIE = "dateEnvoie";
public DatabaseHandler(Context context) {
super(context, DATABASE_NAME, null, DATABASE_VERSION);
}
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL("DROP TABLE IF EXISTS " + TABLE_DEMANDES);
String CREATE_DEMANDES_TABLE = "CREATE TABLE " + TABLE_DEMANDES + "(" + KEY_ID + " INTEGER PRIMARY KEY," + KEY_XML + " TEXT," + KEY_STATUTENVOIE + " INTEGER," + KEY_DATEENVOIE + " DATETIME" + ")";
db.execSQL(CREATE_DEMANDES_TABLE);
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
onCreate(db);
}
но когда моя служба SOAP сделать петлю на моей базе данных и просмотреть данные не посланных, я нашел старые данные, но я не понимаю, почему, потому что я удалить таблицу at onCreate, так почему я возвращаю эти данные? Я переустановил приложение.
UPDATE:
private static final int DATABASE_VERSION = 3;
private static final String DATABASE_NAME = "name.db";
private static String DB_NAME = "Solutis";
private static final String TABLE_DEMANDES = "demandes";
private static final String KEY_ID = "id";
private static final String KEY_XML = "xml";
private static final String KEY_STATUTENVOIE = "statutEnvoie";
private static final String KEY_DATEENVOIE = "dateEnvoie";
public DatabaseHandler(Context context) {
super(context, DATABASE_NAME, null, DATABASE_VERSION);
}
@Override
public void onCreate(SQLiteDatabase db) {
String CREATE_DEMANDES_TABLE = "CREATE TABLE " + TABLE_DEMANDES + "(" + KEY_ID + " INTEGER PRIMARY KEY," + KEY_XML + " TEXT," + KEY_STATUTENVOIE + " INTEGER," + KEY_DATEENVOIE + " DATETIME" + ")";
db.execSQL(CREATE_DEMANDES_TABLE);
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
db.execSQL("DROP TABLE IF EXISTS " + TABLE_DEMANDES);
onCreate(db);
}
Если я отбрасываю таблицу в onCreate, и я вызываю onCreate в onUpgrade, я не понимаю, где ошибка, если я отбрасываю таблицу в 2 случаях использования – Ben
Не отбрасывайте таблицу в onCreate, делайте это только в onUpgrade. Каждый раз, когда вы хотите обновить номер версии инкремента. –
Приятно, но у меня очень трудная проблема, это сложнее: у меня есть 2 строки, например, первое - это инкрементное число (id), а второе - это uuid для распознавания каждой пользовательской установки. Моя проблема состоит в том, чтобы не иметь столкновений с одним и тем же uuid и инкрементным числом, мне нужно изменить uuid и перезагрузить мою базу данных, если пользователь выполнит обновление или переустановку. – Ben