Как я могу добавить несколько таблиц без потери каких-либо данных или таблицы с помощью onUpgrade () - PullRequest
0 голосов
/ 15 июня 2019

Я уже добавил таблицу с помощью onUpgrade (), и теперь я только что осознал необходимость добавить другую таблицу. Я хочу сделать это без потери каких-либо предыдущих данных или таблиц.

Я попытался удалить все из onUpgrade, чтобы добавить новую таблицу, но приложение просто вылетело. Я хочу сохранить все 3 уже существующих таблицы и добавить новую

@Override
public void onCreate(SQLiteDatabase db) {
    db.execSQL("CREATE TABLE "+ TABLE_NAME+  "(Datee DATE, Challan INTEGER PRIMARY KEY,Lr VARCHAR, Than INTEGER, Quality TEXT, Decise DATE, Panna INTEGER, Caustic Date, Party TEXT, Marka Text)");
    db.execSQL("Create table "+ TABLE_NAME2+" (id INTEGER PRIMARY KEY AUTOINCREMENT, challan INTEGER UNIQUE, date DATE, than INTEGER, marka VARCHAR, quality VARCHAR ) ");
}

@Override   
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
    db.execSQL("DROP TABLE IF EXISTS "+ TABLE_NAME);
    db.execSQL("Drop table if exists "+ TABLE_NAME2 );
    onCreate(db);
    db.execSQL("Create table "+ TABLE_NAME3+" (id INTEGER PRIMARY KEY AUTOINCREMENT, marka VARCHAR, indate DATE, qty INTEGER, outdate DATE, stamp DATE Default CURRENT_DATE ) ");

}

1 Ответ

0 голосов
/ 15 июня 2019

В определениях таблиц можно использовать предложение ЕСЛИ НЕ СУЩЕСТВУЕТ .

В качестве такового вы можете использовать: -

@Override
public void onCreate(SQLiteDatabase db) {
    db.execSQL("CREATE TABLE IF NOT EXISTS "+ TABLE_NAME+  "(Datee DATE, Challan INTEGER PRIMARY KEY,Lr VARCHAR, Than INTEGER, Quality TEXT, Decise DATE, Panna INTEGER, Caustic Date, Party TEXT, Marka Text)");
    db.execSQL("Create table IF NOT EXISTS "+ TABLE_NAME2+" (id INTEGER PRIMARY KEY AUTOINCREMENT, challan INTEGER UNIQUE, date DATE, than INTEGER, marka VARCHAR, quality VARCHAR ) ");
    db.execSQL("Create table IF NOT EXISTS "+ TABLE_NAME3+" (id INTEGER PRIMARY KEY AUTOINCREMENT, marka VARCHAR, indate DATE, qty INTEGER, outdate DATE, stamp DATE Default CURRENT_DATE ) ");
}

@Override   
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
    onCreate(db);

}

Так как существующие таблицы не будут созданы, так как они не будут удалены.

Если вы хотите обслуживать более сложные сценарии, например, если приложение уже опубликовано, то вы можете использовать значения oldVersion и / или newVersion и иметь специальные процедуры для каждого изменения версии.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...