sqflite 官方使用教程

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"

助手将逃避这个名字,即

将等同于在表名周围手动添加双引号(此处令人困惑,名为table)

然而,在任何其他原料陈述(包括orderBy,where,groupBy),确保正确转义名称中使用双引号。例如,请参见下面的内容,其中的列名group未在columns参数中转义,但在where参数中转义。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容