返回

【Flutter 3-4】数据持久化——sqflite教程

前端

概述

数据持久化是移动应用程序开发中非常重要的一个环节,它可以让应用程序在多次运行之间存储和检索数据。Flutter中,数据持久化的方式有很多种,其中最常见的一种就是使用SQLite数据库。SQLite是一个轻量级的关系型数据库,它以其易用性和高效性而闻名。

Sqflite简介

Sqflite是一个Flutter插件,它可以让你在Flutter应用程序中使用SQLite数据库。Sqflite提供了非常丰富的API,可以让你轻松地对数据库进行各种操作,比如创建数据库、创建表、插入数据、查询数据、更新数据和删除数据等。

使用Sqflite进行数据持久化

1. 导入Sqflite

在使用Sqflite之前,你需要先将它导入到你的Flutter应用程序中。你可以通过在你的应用程序的pubspec.yaml文件中添加以下代码来实现:

dependencies:
  sqflite: ^2.2.7+1

然后,你就可以通过以下代码来导入Sqflite:

import 'package:sqflite/sqflite.dart';

2. 创建数据库

创建数据库是使用Sqflite进行数据持久化的第一步。你可以通过以下代码来创建数据库:

final database = await openDatabase(
  'my_database.db',
  version: 1,
  onCreate: (db, version) {
    db.execute('CREATE TABLE my_table (id INTEGER PRIMARY KEY, name TEXT, age INTEGER)');
  },
);

在上面的代码中,我们首先指定了数据库的名称为“my_database.db”,然后指定了数据库的版本号为1。接下来,我们在onCreate回调函数中创建了名为“my_table”的表,该表包含三个字段:“id”、“name”和“age”。

3. 插入数据

将数据插入数据库是使用Sqflite进行数据持久化的又一个重要步骤。你可以通过以下代码来插入数据:

final id = await database.insert(
  'my_table',
  {'name': 'John Doe', 'age': 30},
  conflictAlgorithm: ConflictAlgorithm.replace,
);

在上面的代码中,我们首先指定了要插入数据的表名为“my_table”。接下来,我们指定了要插入的数据,这是一个Map对象,其中包含了“name”和“age”两个字段的值。最后,我们指定了冲突算法为“ConflictAlgorithm.replace”,这意味着如果要插入的数据与表中已有的数据冲突,则用要插入的数据替换表中已有的数据。

4. 查询数据

查询数据是使用Sqflite进行数据持久化的一个基本操作。你可以通过以下代码来查询数据:

final List<Map<String, dynamic>> results = await database.query('my_table');

在上面的代码中,我们首先指定了要查询数据的表名为“my_table”。接下来,我们调用query()方法来查询数据,该方法返回一个Future对象,其中包含了查询结果。查询结果是一个List对象,其中包含了多个Map对象,每个Map对象代表一条数据记录。

5. 更新数据

更新数据是使用Sqflite进行数据持久化的另一个基本操作。你可以通过以下代码来更新数据:

final rowCount = await database.update(
  'my_table',
  {'age': 31},
  where: 'name = ?',
  whereArgs: ['John Doe'],
);

在上面的代码中,我们首先指定了要更新数据的表名为“my_table”。接下来,我们指定了要更新的数据,这是一个Map对象,其中包含了“age”字段的值。然后,我们指定了更新条件,即“name = ?”,这意味着只更新名为“John Doe”的数据记录。最后,我们指定了更新条件的参数值,即“John Doe”。

6. 删除数据

删除数据是使用Sqflite进行数据持久化的最后一个基本操作。你可以通过以下代码来删除数据:

final rowCount = await database.delete(
  'my_table',
  where: 'name = ?',
  whereArgs: ['John Doe'],
);

在上面的代码中,我们首先指定了要删除数据的表名为“my_table”。接下来,我们指定了删除条件,即“name = ?”,这意味着只删除名为“John Doe”的数据记录。最后,我们指定了删除条件的参数值,即“John Doe”。

总结

以上就是使用Sqflite进行数据持久化的基本操作。如果你想了解更多关于Sqflite的信息,你可以参考它的官方文档。