Flutter持久化存储之sqflite操作数据库详细使用

前言

sqflite是一个轻量的关系型数据库,以表的形式将较为复杂的数据存储到.db文件中(数据库),同时支持安卓和IOS,简单数据可直接使用 shared_preferences

1. 准备工作

1.1 添加依赖:

在pubspec.yaml文件下添加
path_provider是用来处理路径相关的操作
dependencies:
  sqflite: ^1.3.0+2
  path_provider: ^1.6.9

1.2 安装

如果保存了有自动执行则最好,如果没有那么在终端运行flutter packages get命令

1.3 导入

import 'package:sqflite/sqflite.dart';
import 'package:path_provider/path_provider.dart';

1.4 注意

 // SQLite支持的数据类型  不支持bool和DateTime
 // SQL类型 ==== Dart类型
 // integer ==== int
 // real    ==== num
 // text    ==== String
 // blob    ==== Uint8List

2. 使用流程

2.1 创建数据库

// 数据库文件路径:可以根据自己的需求自己定 这里使用的是外部存储可见的目录
// 可以将路径打印出来 在手机上找到它
String databasePath=(await getExternalStorageDirectory()).path+"/demo.db";

// 打开数据库  (若想数据库只能读取则使用openReadOnlyDatabase())
// 1 若数据库不存在 则创建数据库
// 2 若数据库存在 version大于当前数据库version 则升级
// 3 若数据库存在 version小于当前数据库version 则降级
// 4 若数据库存在 version等于当前数据库version 则不变
 Database database=await openDatabase(databasePath,version: 2,
  readOnly: false,      //   是否只读
  singleInstance: true, //   是否单例
  // 第一个被调用的可选回调 配置数据库使用SQL语句配置
  onConfigure: (Database database)async{
   
    await database.execute("PRAGMA foreign_keys = ON");
    print("配置数据库");
  },
  // 创建数据库回调
  onCreate: (Database database,int version)async{
   
    
  • 8
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Flutter提供了多种持久化存储数据的方法,包括: 1. Shared Preferences:用于存储键值对,适合存储简单的数据,如用户设置、应用程序配置等。 2. SQLite数据库:用于存储结构化数据,适合存储大量数据和复杂数据,如用户信息、应用程序数据等。 3. 文件存储:用于存储大型二进制数据,如图像、音频、视频等。 下面是使用Shared Preferences进行数据持久化的示例代码: ```dart import 'package:flutter/material.dart'; import 'package:shared_preferences/shared_preferences.dart'; void main() { runApp(MyApp()); } class MyApp extends StatelessWidget { @override Widget build(BuildContext context) { return MaterialApp( title: 'Flutter Demo', home: MyHomePage(), ); } } class MyHomePage extends StatefulWidget { @override _MyHomePageState createState() => _MyHomePageState(); } class _MyHomePageState extends State<MyHomePage> { String _name = ''; @override void initState() { super.initState(); _loadName(); } void _loadName() async { SharedPreferences prefs = await SharedPreferences.getInstance(); setState(() { _name = prefs.getString('name') ?? ''; }); } void _saveName(String name) async { SharedPreferences prefs = await SharedPreferences.getInstance(); await prefs.setString('name', name); } @override Widget build(BuildContext context) { return Scaffold( appBar: AppBar( title: Text('Flutter Demo'), ), body: Center( child: Column( mainAxisAlignment: MainAxisAlignment.center, children: <Widget>[ Text( 'Hello, $_name!', style: Theme.of(context).textTheme.headline4, ), TextField( onChanged: (value) => _saveName(value), ), ], ), ), ); } } ``` 在这个示例中,我们使用SharedPreferences来存储用户的名字。在初始化时,我们会调用_loadName()方法来加载存储在SharedPreferences中的名字。在用户输入名字后,我们会调用_saveName()方法来保存名字。每当名字发生变化时,UI会自动更新。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值