flutter - 如何在颤振应用程序中使用 sqflite 数据库?
问题描述
我正在尝试在颤振应用程序中创建一个带有内部数据库的应用程序,我创建了一个数据库,但我无法在其中添加、删除、更新数据。
先感谢您。
解决方案
https://pub.dev/packages/sqflite
// Get a location using getDatabasesPath
var databasesPath = await getDatabasesPath();
String path = join(databasesPath, 'demo.db');
// Delete the database
await deleteDatabase(path);
// open the database
Database database = await openDatabase(path, version: 1,
onCreate: (Database db, int version) async {
// When creating the db, create the table
await db.execute(
'CREATE TABLE Test (id INTEGER PRIMARY KEY, name TEXT, value INTEGER, num REAL)');
});
// Insert some records in a transaction
await database.transaction((txn) async {
int id1 = await txn.rawInsert(
'INSERT INTO Test(name, value, num) VALUES("some name", 1234, 456.789)');
print('inserted1: $id1');
int id2 = await txn.rawInsert(
'INSERT INTO Test(name, value, num) VALUES(?, ?, ?)',
['another name', 12345678, 3.1416]);
print('inserted2: $id2');
});
// Update some record
int count = await database.rawUpdate(
'UPDATE Test SET name = ?, value = ? WHERE name = ?',
['updated name', '9876', 'some name']);
print('updated: $count');
// Get the records
List<Map> list = await database.rawQuery('SELECT * FROM Test');
List<Map> expectedList = [
{'name': 'updated name', 'id': 1, 'value': 9876, 'num': 456.789},
{'name': 'another name', 'id': 2, 'value': 12345678, 'num': 3.1416}
];
print(list);
print(expectedList);
assert(const DeepCollectionEquality().equals(list, expectedList));
// Count the records
count = Sqflite
.firstIntValue(await database.rawQuery('SELECT COUNT(*) FROM Test'));
assert(count == 2);
// Delete a record
count = await database
.rawDelete('DELETE FROM Test WHERE name = ?', ['another name']);
assert(count == 1);
// Close the database
await database.close();
推荐阅读
- python - 当通过 COV 通知时如何在 python3 中使用 BAC0 触发函数
- android - 并排的两个按钮,水平自动填充
- d3.js - ServiceNow / GlideRecord - 查询表格后如何为图表准备数据?
- windows - GCC 9.2.0 构建错误:gmp.h 的版本不正确,而版本实际上是正确的
- java - 如何修改每个 web 应用程序的 tomcat web.xml 位置
- java - 使用 JAVA 更改目录内所有文件的权限
- android - 无法在 android 10 及更高版本的设备上列出所有 pdf 文件
- azure - 备份和还原 Azure SQL 托管实例需要哪些 Azure RBAC 权限?
- kubernetes - 通过服务帐户更新 k8s 入口
- c - 在C中用realloc()截断字符串?