В настоящее время я занимаюсь разработкой приложения для Android с использованием флаттера.
Для настройки баз данных я использую плагин sqflite.
Настройка баз данных работает следующим образом:
Future<Database> getDbModelDevice() async {
return openDatabase(join(await getDatabasesPath(), dbNameDevice),
onCreate: (db, version) {
return db.execute("""
CREATE TABLE $tableNameDevice (
id INTEGER PRIMARY KEY,
name TEXT NOT NULL,
ip TEXT NOT NULL
)""");
},
version: 1,
);
}
Это работает как задумано и создает базу данных с таблицей.
Я совершенно новичок в этой теме, поэтому я не знаю, сможете ли вы как-то увидеть структуру созданной таблицы. Я попытался протестировать новую таблицу, вставив в нее устройство:
Future<void> insertDevice(Device device) async {
db.insert(
tableNameDevice,
device.toMap(),
conflictAlgorithm: ConflictAlgorithm.replace,
);
}
Map<String, dynamic> toMap() {
return {
'id': id,
'name': name,
'ip': ip,
};
}
При вызове функции insertDevice появляется следующее сообщение об ошибке:
[ERROR:flutter/lib/ui/ui_dart_state.cc(148)] Unhandled Exception: DatabaseException(table deviceTable has no column named ip (code 1): , while compiling: INSERT OR REPLACE INTO deviceTable (id, name, ip) VALUES (?, ?, ?)) sql 'INSERT OR REPLACE INTO deviceTable (id, name, ip) VALUES (?, ?, ?)' args [0, testInsertion, 0.0.0.0]}
Другие столбцы работают, так как вставка работает при комментировании параметра ip в функциях toMap () устройство без ошибок.
Что мне здесь не хватает? Любая помощь с благодарностью.