Flutter通过sqflite打开已有sqlite数据库
Flutter打开现有数据库时,都会打开一个新的数据库,无法读取数据。把数据库拷贝到工作目录打开。
·
问题
Flutter打开现有数据库时,都会打开一个新的数据库,无法读取数据。
解决方法
把数据库拷贝到工作目录打开。
- 添加依赖
dependencies:
get: ^4.6.6
path_provider: ^2.1.4
assets:
- assets/db/huang.db
- 打开数据库时,先复制到工作目录
import 'dart:typed_data';
import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import 'package:sqflite/sqflite.dart';
import 'package:path_provider/path_provider.dart';
import 'dart:io';
import 'dart:async';
import 'package:path/path.dart';
class MyDB {
Future<Database> openHuangDB() async {
//获取应用程序文档目录
Directory doc = await getApplicationDocumentsDirectory();
String path = join(doc.path, "huang.db");
//判断数据库是否存在
if (!await databaseExists(path)) {
//如果不存在就复制数据库文件到指定目录
ByteData data = await rootBundle.load("assets/db/huang.db");
List<int> bytes =
data.buffer.asUint8List(data.offsetInBytes, data.lengthInBytes);
await File(path).writeAsBytes(bytes);
}
return await openDatabase(path);
}
void queryCa() {
openHuangDB().then((value) {
value.rawQuery("SELECT * FROM category").then((value) {
print(value);
});
});
}
}
更多推荐
已为社区贡献1条内容
所有评论(0)