- r - 以节省内存的方式增长 data.frame
- ruby-on-rails - ruby/ruby on rails 内存泄漏检测
- android - 无法解析导入android.support.v7.app
- UNIX 域套接字与共享内存(映射文件)
如何使用 flutter 和 sqflite 从 Assets 中打开现有数据库?我阅读了本指南: https://github.com/tekartik/sqflite/blob/master/doc/opening_db.md#preloading-data
但我的应用程序显示“未找到表”错误谢谢。
最佳答案
Opening an asset database指南解释了在 Flutter 应用程序中捆绑和打开预先存在的 SQLite 数据库必须执行的步骤:。
首先,您必须编辑您的 pubspec.yaml
配置以引用您预先存在的 SQLite 数据库文件,以便在构建应用程序时将其捆绑到您的应用程序中。在下面的示例中,我们假设该文件存在于您的 Flutter 应用程序目录下的 assets/demo.db
中:
# The following section is specific to Flutter.
flutter:
# The following line ensures that the Material Icons font is
# included with your application, so that you can use the icons in
# the material Icons class.
uses-material-design: true
# To add assets to your application, add an assets section, like this:
assets:
- assets/demo.db
接下来,在您的应用程序初始化中,您需要将捆绑文件数据复制到可用位置,因为捆绑资源本身无法在 Android 上作为文件直接打开。
sqflite.getDatabasesPath()
函数将返回用于此的目录。这通常类似于 Android 上的 /data/data/org.example.myapp/databases/
。有了这个,您就可以从捆绑 Assets 中加载字节数据并创建应用程序的可写数据库文件,此处命名为 app.db
:
// Construct the path to the app's writable database file:
var dbDir = await getDatabasesPath();
var dbPath = join(dbDir, "app.db");
// Delete any existing database:
await deleteDatabase(dbPath);
// Create the writable database file from the bundled demo database file:
ByteData data = await rootBundle.load("assets/demo.db");
List<int> bytes = data.buffer.asUint8List(data.offsetInBytes, data.lengthInBytes);
await File(dbPath).writeAsBytes(bytes);
最后,您可以在应用程序启动时打开创建的数据库文件:
var db = await openDatabase(dbPath);
关于database - Flutter sqflite 打开已有数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53126885/
我有一个 sqflite 数据库,其中设置了一个表,其中所有列都放在一边,形成了唯一的键,设置为 BLOB 数据类型。目的是存储为二进制数据。我对 Dart 和 flutter 非常陌生,所以我让事情
我得到了sqflite函数Future>返回的getSentences(句子是具有int id和String句子的类)。现在我要在我的主窗口小部件树中列出该列表。因此,我创建了此功能: Future
我只是想将用户保存到我的数据库中。以下是我的用户模型类 class User { int _id; String _userId; String _mobileNumber; User
我正在尝试从我的 SQFlite 数据库中读取下拉列表的列表部分,但不知道如何读取。 来自 database_helper 的查询 Future> getFieldData(String animal
我试图通过创建一个简单的 CLI 来测试 SQFlite API。我可以使用 Android Studio 和 VS Code 从同一目录运行默认示例应用程序,我也可以运行其他简单的 CLI 程序。以
我正在将 sqflite 用于我的 flutter 项目,现在,我想备份然后恢复它。我搜索了这个问题,但找不到结果。有什么办法吗? 谢谢。 最佳答案 依赖关系 dependencies: encr
我有以下rawQuery final maps = await db.rawQuery(""" select r.id, r.name, r.description,r.created_by, a.i
我想使用 sqflite package存储我的对象。我读了一些articles , tutorials和 examples关于它。至此我明白了一切。但它们都没有涵盖我的用例: 我有一个名为 Foo
我有两个相关的表,在我的模式中声明了一个外键: CREATE TABLE Collection( id INTEGER PRIMARY KEY, name TEXT, star
我正在创建一个应用程序并需要一个数据库。该数据库包含位置表和兴趣点表。这是一对多的关系。 一个位置有几个兴趣点。 现在我试图用 sqflite 来做这种关系,但失败了。 我已经尝试添加外键,但它不起作
我有以下查询,它从员工表中选择,其中名称为“max”,ID 不在 123 和 444 中。不在ID中可以在未来增长。但我收到错误为 错误 (8023):[错误:flutter/lib/ui/ui_da
我正在尝试在 android 中创建 Sqflite 数据库,并在创建时插入一些记录。我不想有 asset_db,因为我必须在一张表中只插入 5-6 条记录。 我试着做这样的事情 initDataba
我将所有 API 数据存储到缓存中。一些 API 有超过 10000 个数据。 postman 响应时间在一秒内。但在应用程序中导航到下一页非常慢。我使用了这段代码: onPressed: (
如何在sqflite中快速插入多条记录?标准的快速方法是: await database.insert(table, object.toMap()) 但是我不认为用循环一对一插入记录是个好主意。或者我
我已经阅读了许多关于如何在 Flutter 中实现 Sqflite 的教程和示例。其他所有示例都是仅使用一个模型或数据库表完成的。如这些教程中所定义: https://pub.dartlang.org
如何使用 flutter 和 sqflite 从 Assets 中打开现有数据库?我阅读了本指南: https://github.com/tekartik/sqflite/blob/master/do
我正在使用使用 SQLite 数据库的 flutter 构建和应用程序。我使用这段代码创建了第一个表: void _createDb(Database db, int newVersion) asy
我使用 flutter sqflite 创建了一个本地数据库。当我在该列表中添加或删除某些内容时,我想听取该数据库上任务列表的长度并更新任务总数。但是当我调用 provider.of(context)
以下仅发生在刚刚在代码中创建的数据库中。以前存在的数据库工作正常。 我有数据库助手的常用单例设置,相关部分是: Future get database async { // ... db ??
我的应用中有两个模型,分别命名为 Basket 和 Items。模型篮包含项目列表。所以如下: 篮子: int id string name string imageUrl List items 项目
我是一名优秀的程序员,十分优秀!