sqflite 1.2.0
2019年12月16日 发布 • tekartik.com
插件地址: sqflite
支持
Flutter的 SQLite插件。支持iOS,Android 和 MacOS。
支持交易和批次
打开期间自动版本管理
插入/查询/更新/删除查询的助手
在iOS和Android的后台线程中执行的数据库操作
入门
在flutter项目中添加依赖项:
用法示例
引用 sqflite.dart
打开数据库
SQLite数据库是文件系统中由路径标识的文件。如果是相对路径,则该路径相对于所获得的路径,该路径是getDatabasesPath()Android上的默认数据库目录和iOS上的documents目录。
var db = await openDatabase('my_db.db');
有一个基本的迁移机制可以处理打开期间的模式更改。
许多应用程序使用一个数据库,并且永远不需要关闭它(当应用程序终止时,它将关闭)。如果要释放资源,可以关闭数据库。
await db.close();
原始SQL查询
演示代码执行原始SQL查询
SQL助手
使用助手的示例
读取结果
假设有以下读取结果:
生成的地图项为只读
如果要在内存中进行修改,则需要创建一个新地图:
不使用数据库,而仅在事务中使用Transaction对象访问数据库
为了避免在Dart和本机代码之间进行乒乓球,可以使用Batch:
获得每个操作的结果是有成本的(插入的ID以及更新和删除的更改数),尤其是在执行额外SQL请求的Android上。如果您不关心结果而担心大批量的性能,则可以使用
注意,在事务处理期间,直到事务提交后,才会提交批处理
默认情况下,批处理在遇到错误后立即停止(通常会还原未提交的更改)。您可以忽略错误,以便即使一个操作失败也可以运行并落实每个成功的操作:
表和列名
通常,最好避免对实体名称使用SQLite关键字。如果使用以下任何名称:
"add","all","alter","and","as","autoincrement","between","case","check","collate","commit","constraint","create","default","deferrable","delete","distinct","drop","else","escape","except","exists","foreign","from","group","having","if","in","index","insert","intersect","into","is","isnull","join","limit","not","notnull","null","on","or","order","primary","references","select","set","table","then","to","transaction","union","unique","update","using","values","when","where"