说明
Flutter原生是没有支持数据库操作的,它使用SQLlit插件来使应用具有使用数据库的能力。其实就是Flutter通过插件来与原生系统沟通,来进行数据库操作。
平台支持
- FLutter的SQLite插件支持IOS,安卓,和MacOS平台
- 如果要对Linux / Windows / DartVM进行支持请使用sqflite_common_ffi
- 不支持web平台
- 数据库操作在安卓或ios的后台执行
使用案例
- notepad_sqflite 可以在iOS / Android / Windows / linux / Mac上运行的简单的记事本应用
简单使用
添加依赖
为了使用 SQLite 数据库,首先需要导入 sqflite 和 path 这两个 package
- sqflite 提供了丰富的类和方法,以便你能便捷实用 SQLite 数据库。
- path 提供了大量方法,以便你能正确的定义数据库在磁盘上的存储位置。
dependencies:
sqflite: ^1.3.0
path:版本号
复制代码
使用
导入 sqflite.dart
import 'dart:async';
import 'package:path/path.dart';
import 'package:sqflite/sqflite.dart';
复制代码
打开数据库
SQLite数据库就是文件系统中的文件。如果是相对路径,则该路径是getDatabasesPath()所获得的路径,该路径关联的是Android上的默认数据库目录和iOS上的documents目录。
var db = await openDatabase('my_db.db');
复制代码
许多时候我们使用数据库时不需要手动关闭它,因为数据库会在程序关闭时被关闭。如果你想自动释放资源,可以使用如下方式:
await db.close();
复制代码
执行原始的SQL查询
- 使用getDatabasesPath()获取数据库位置
使用 sqflite package 里的 getDatabasesPath 方法并配合 path package里的 join 方法定义数据库的路径。使用path包中的join方法是确保各个平台路径正确性的最佳实践。
var databasesPath = await getDatabasesPath();
String path = join(databasesPath, 'demo.db');
复制代码
- 打开数据库
Database database = await openDatabase(path, version: 1,
onCreate: (Database db, int version) async {
// 创建数据库时创建表
await db.execute(
'CREATE TABLE Test (id INTEGER PRIMARY KEY, name TEXT, value INTEGER, num REAL)');
});
复制代码
- 增</