#database #flutter #dart
Вопрос:
Я хочу создать базу данных для настольного приложения flutter. Я использую плагин sqflite_common_ffi для этой цели, но проблема в том, что он не позволяет мне создавать базу данных и выдает некоторую ошибку при вызове метода onCreate.
// this opens the database (and creates it if it doesn't exist)
_initDatabase() async {
Directory documentsDirectory = await getApplicationDocumentsDirectory();
String path = join(documentsDirectory.path, _databaseName);
var databaseFactory = databaseFactoryFfi;
print('DATABASE PATH: $path');
Database db = await databaseFactory.openDatabase(
path,
options: OpenDatabaseOptions(
version: 1,
onCreate: (Database db, int version) async {
await db.execute('''
CREATE TABLE $table (
$columnId INTEGER PRIMARY KEY,
$columnName TEXT NOT NULL,
$columnType TEXT NOT NULL,
$columnStatus TEXT NOT NULL,
$columnFlag INTEGER NOT NULL
)
''');
print('TABLE CREATED');
},
),
);
print('DATABASE CREATED');
return db;
}
Это мой код для создания базы данных. Когда я запускаю приложение, оно выдает следующую ошибку:
Кто-нибудь, пожалуйста, помогите мне. Спасибо
Ответ №1:
Вы проверили эти шаги:
https://pub.dev/packages/sqflite_common_ffi#windows
Должен работать как есть в режиме отладки (sqlite3.dll поставляется в комплекте).
В режиме выпуска добавьте sqlite3.dll в той же папке, что и ваш исполняемый файл.
sqfliteFfiInit предоставляется в качестве ссылки на реализацию для загрузки библиотеки sqlite. Пожалуйста, посмотрите на sqlite3, если вы хотите переопределить это поведение.
Комментарии:
1. Да, мне не хватало этой однострочной команды sqfliteFfiInit(); в основном методе. Спасибо, теперь все исправлено
2. Спасибо, что приняли ответ. Поднимите голос, если сможете
![]()