sqlite - Fluttet sqfLite 删除
问题描述
我正在尝试构建一个笔记应用程序。我在 sqflite 上观看了一些教程,以便在应用程序终止后保存数据。我已设法保存数据,但我无法删除数据。
这是我创建的 DBelper 类:
import 'package:sqflite/sqflite.dart' as sql;
import 'package:path/path.dart' as path;
import 'package:sqflite/sqlite_api.dart';
class DBHelper {
static Future<Database> databse() async {
final dbPath = await sql.getDatabasesPath();
return sql.openDatabase(path.join(dbPath, 'notes.db'),
onCreate: (db, version) {
return db.execute(
'CREATE TABLE user_notes(id TEXT PRIMARY KEY, title TEXT, text TEXT)');
}, version: 1);
}
static Future<void> insert(String table, Map<String, Object> data) async {
final db = await DBHelper.databse();
db.insert(
table,
data,
);
}
static Future<List<Map<String, dynamic>>> getData(String table) async {
final db = await DBHelper.databse();
return db.query(table);
}
}
这就是我保存数据的方式:
onPressed: () {
Provider.of<Notes>(context, listen: false)
.addNote(newNoteTitle, newNoteText);
DBHelper.insert('user_notes',
{'title': newNoteTitle, 'text': newNoteText});
Navigator.pop(context);
},
我一直在尝试创建 DBHelper.deleteNote,但即使我设法编写了一些没有错误的代码,也没有任何内容被删除。提前感谢您的帮助
解决方案
如果您只是想删除一个便笺,那么您可以使用它id
,如下所示:
deleteNote(String id) async {
final db = await DBHelper.databse();
db.delete('user_notes', where: 'id = ?', whereArgs: [id]);
}
推荐阅读
- eclipse - 无法在 Eclipse 中使用 PowerMock
- android - 更新 Android Studio 3.5 获取 proguard 警告
- ios - UIPickerView 数据未显示在子视图中
- javascript - 如何在 javascript 中为此代码检索复选框值
- amazon-web-services - 将 AWS IAM 角色建立在其他角色之上并对其进行扩展
- ios - 应用程序卡在带有 Xcode 11 测试版的 iOS 13 测试版模拟器上,但在带有 Xcode 10 的 iOS 13 测试版模拟器上运行良好
- c# - DownloadFileAsync (WebClient) 的奇怪行为
- powershell - 打开 Excel 电子表格时,PowerShell 处理字符串中的空格
- javascript - 如何从数组中删除特定值
- reactjs - 为什么我的 onClick 在我的 React 项目中不起作用