Flutter - Изменить таблицу Sqlite без удаления базы данных. - PullRequest
0 голосов
/ 26 декабря 2018

Я использую базу данных Sqlite во Flutter с помощью плагина sqflite.Следуя приведенным ниже ссылкам, я могу успешно создать базу данных и выполнять в ней операции CRUD.

Sqflite Plugin

Sqflite Tutorial - Youtube Playlist

Проблема в том, что после создания базы данных я не могу изменить старые таблицы.Чтобы получить новый столбец в таблице «tabEmployee», я должен удалить базу данных и воссоздать ее.

void _onCreate(Database db, int newVersion) async {
    await db.execute(
        "CREATE TABLE tabEmployee($idPk INTEGER PRIMARY KEY, employeeName TEXT)");
  }

Что мне следует сделать, чтобы изменить ранее созданную таблицу в sqflite без удаления базы данных?

1 Ответ

0 голосов
/ 26 декабря 2018

Ну, мне удалось решить мою проблему.С некоторой помощью комментариев dlohani и Как добавить новый столбец в базу данных Android SQLite ссылка.

Я создал новый метод "_onUpgrade" и назвал его параметром "openDatabase" и изменилномер версии.Ниже приведен мой соответствующий код:

initDb() async {
    Directory documentDirectory = await getApplicationDocumentsDirectory();
    String path = join(documentDirectory.path, 'maindb.db');
    var ourDb = await openDatabase(path, version: 2, onCreate: _onCreate, onUpgrade: _onUpgrade);
    return ourDb;
  }

  // UPGRADE DATABASE TABLES
  void _onUpgrade(Database db, int oldVersion, int newVersion) {
    if (oldVersion < newVersion) {
      db.execute("ALTER TABLE tabEmployee ADD COLUMN newCol TEXT;");
    }
  }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...