当前位置: 首页 > news >正文

Flutter中sqflite的使用案例

目录

引言

安装sqflite

创建表

查询数据

添加数据

删除数据

更新数据

完整使用案例


引言

 随着移动应用的发展,本地数据存储成为了一个不可或缺的功能。在Flutter中,sqflite 是一个非常流行且强大的SQLite插件,它允许开发者在移动设备上轻松地进行数据库操作。本文将通过具体的使用案例,详细介绍如何在Flutter项目中集成和使用 sqflite 进行数据存储和查询。

安装sqflite

首先,你需要在 pubspec.yaml 文件中添加 sqflite 依赖: 

dependencies:flutter:sdk: fluttersqflite: ^2.3.3+1

然后运行 flutter pub get 来安装依赖,或者直接执行下面的命令

flutter pub add sqflite

创建表

// 创建表Future<void> _onCreate(Database db, int version) async {await db.execute('''CREATE TABLE Domain (id INTEGER PRIMARY KEY AUTOINCREMENT,url TEXT)''');}

查询数据

// 查看表的数据Future<List<Map<String, dynamic>>> getItemsFromTable() async {Database db = await database;return await db.query("Domain");}
// 查看存在某一条数据Future<bool> checkIfQrExists(String url) async {Database db = await database;List<Map<String, dynamic>> results = await db.query('Domain',where: 'url= ?',whereArgs: [url],);return results.isNotEmpty;}

添加数据

Future<void> insertDomain(String url) async {Database db = await database;await db.insert('Domain', {'url': url,});}

删除数据

Future<void> deleteUrl(String url) async {final db = await database;await db.delete('Domain',where: 'url = ?',whereArgs: [url],);
}

更新数据

Future<void> updateUrl(Map<String, dynamic> domain, String url) async {final db = await database;await db.update('Domain',domain,where: 'url = ?',whereArgs: [url],);
}

完整使用案例

import 'package:sqflite/sqflite.dart';
import 'package:path/path.dart';class DatabaseHelper {static final DatabaseHelper _instance = DatabaseHelper._internal();factory DatabaseHelper() => _instance;static Database? _database;static const int databaseVersion = 2;DatabaseHelper._internal();Future<Database> get database async {if (_database != null) return _database!;_database = await _initDatabase();return _database!;}Future<Database> _initDatabase() async {// 初始化操作String path = join(await getDatabasesPath(), 'app_database.db');return await openDatabase(path,version: databaseVersion,onCreate: _onCreate,onUpgrade: _onUpgrade,);}// 创建表Future<void> _onCreate(Database db, int version) async {await db.execute('''CREATE TABLE Domain (id INTEGER PRIMARY KEY AUTOINCREMENT,url TEXT)''');}Future<void> _onUpgrade(Database db, int oldVersion, int newVersion) async {print("版本号为$oldVersion");if (oldVersion < 2) {// 更新数据库的操作}}// 查看表的数据Future<List<Map<String, dynamic>>> getItemsFromTable() async {Database db = await database;return await db.query("Domain");}// 查看存在某一条数据Future<bool> checkIfQrExists(String url) async {Database db = await database;List<Map<String, dynamic>> results = await db.query('Domain',where: 'url= ?',whereArgs: [url],);return results.isNotEmpty;}// 增加一条数据Future<void> insertDomain(String url) async {Database db = await database;await db.insert('Domain', {'url': url,});}// 更新一条数据Future<void> updateUrl(Map<String, dynamic> domain, String url) async {final db = await database;await db.update('Domain',domain,where: 'url = ?',whereArgs: [url],);}
}

使用时

  DatabaseHelper dbHelper = DatabaseHelper();Future<void> getDatabaseData() async {List<Map<String, dynamic>> data = await dbHelper.getItemsFromTable();for (var item in data) {print('Item: ${item.toString()}');}}

相关文章:

Flutter中sqflite的使用案例

目录 引言 安装sqflite 创建表 查询数据 添加数据 删除数据 更新数据 完整使用案例 引言 随着移动应用的发展&#xff0c;本地数据存储成为了一个不可或缺的功能。在Flutter中&#xff0c;sqflite 是一个非常流行且强大的SQLite插件&#xff0c;它允许开发者在移动设备…...

【2024 Optimal Control 16-745】【Lecture 2】integrators.ipynb功能分析

代码功能分析 导入库和项目设置 import Pkg; Pkg.activate(__DIR__); Pkg.instantiate()功能&#xff1a;激活当前文件夹为 Julia 项目环境&#xff0c;并安装当前项目中缺失的依赖包。 import Pkg&#xff1a; 导入 Julia 的包管理模块 Pkg&#xff0c;用于管理项目依赖。 …...

【linux】ubuntu下常用快捷键【笔记】

环境 硬件&#xff1a;通用PC 系统&#xff1a;Ubuntu 20.04 软件 &#xff1a; 打开终端窗口&#xff1a;Ctrl Alt T 关闭当前窗口&#xff1a;Alt F4 改变窗口大小&#xff1a;Alt F8 移动窗口&#xff1a; Alt F7 配合 “←”、“→”、“↑”、“↓”来移动窗口 …...

【Linux】常用命令练习

一、常用命令 1、在/hadoop目录下创建src和WebRoot两个文件夹 分别创建&#xff1a;mkdir -p /hadoop/src mkdir -p /hadoop/WebRoot 同时创建&#xff1a;mkdir -p /hadoop/{src,WebRoot}2、进入到/hadoop目录&#xff0c;在该目录下创建.classpath和README文件 分别创建&am…...

力扣-Hot100-数组【算法学习day.37】

前言 ###我做这类文档一个重要的目的还是给正在学习的大家提供方向&#xff08;例如想要掌握基础用法&#xff0c;该刷哪些题&#xff1f;&#xff09;我的解析也不会做的非常详细&#xff0c;只会提供思路和一些关键点&#xff0c;力扣上的大佬们的题解质量是非常非常高滴&am…...

表格不同类型的数据如何向量化?

在进行机器学习项目时&#xff0c;首先需要获取数据&#xff0c;这些数据可以来自数据库、API、网络抓取&#xff0c;或从CSV、Excel等文件中读取。数据可能包含数值、文本和类别等多种特征&#xff0c;但原始数据通常无法直接用于训练模型。 数据预处理包括清洗、填补缺失值和…...

成都栩熙酷,电商服务新选择

在当今数字经济蓬勃发展的时代&#xff0c;电商平台已成为推动商业创新、促进消费升级的重要力量。抖音小店&#xff0c;作为短视频与电商深度融合的产物&#xff0c;凭借其独特的社交属性和内容营销优势&#xff0c;迅速吸引了大量用户和商家的关注。在这场变革中&#xff0c;…...

【java基础】微服务篇

参考黑马八股视频。 目录 Spring Cloud 5大组件 注册中心 负载均衡 限流 CAP和BASE 分布式事务解决方案 分布式服务的接口幂等性 分布式任务调度 Spring Cloud 5大组件 注册中心 Eureka的作用 健康监控 负载均衡 限流 漏桶固定速率&#xff0c;令牌桶不限速 CAP和BA…...

【LLM训练系列02】如何找到一个大模型Lora的target_modules

方法1&#xff1a;观察attention中的线性层 import numpy as np import pandas as pd from peft import PeftModel import torch import torch.nn.functional as F from torch import Tensor from transformers import AutoTokenizer, AutoModel, BitsAndBytesConfig from typ…...

uni-app快速入门(八)--常用内置组件(上)

uni-app提供了一套基础组件&#xff0c;类似HTML里的标签元素&#xff0c;不推荐在uni-app中使用使用div等HTML标签。在uni-app中&#xff0c;对应<div>的标签是view&#xff0c;对应<span>的是text&#xff0c;对应<a>的是navigator&#xff0c;常用uni-app…...

基于Amazon Bedrock:一站式多模态数据处理新体验

目录 引言 关于Amazon Bedrock 基础模型体验 1、进入环境 2、发现模型及快速体验 3、打开 Amazon Bedrock 控制台 4、通过 Playgrounds 体验模型 &#xff08;1&#xff09;文本生成 &#xff08;2&#xff09;图片生成 关于资源清理 结束语 引言 在云计算和人工智能…...

FAX动作文件优化脚本(MAX清理多余关键帧插件)

大较好,为大家介绍一个节省FBX容量的插件!只保留有用的动画轴向,其他不参与动画运动的清除! 一.插件目的:: 1.我们使用的U3D引擎产生的游戏资源包容量太大,故全方位优化动画资源; 2.在max曲线编辑器内,点取轴向太过麻烦,费事,直观清除帧大大提高效率。 如: 二:…...

Chapter 2 - 16. Understanding Congestion in Fibre Channel Fabrics

Transforming an I/O Operation to FC frames A read or write I/O operation (Figure 2-28) between an initiator and a target undergoes a series of transformations before being transmitted on a Fibre Channel link. 启动程序和目标程序之间的读取或写入 I/O 操作(图…...

mysql数据库(六)pymysql、视图、触发器、存储过程、函数、流程控制、数据库连接池

pymysql、视图、触发器、存储过程、函数、流程控制、数据库连接池 文章目录 pymysql、视图、触发器、存储过程、函数、流程控制、数据库连接池一、pymysql二、视图三、触发器四、存储过程五、函数六、流程控制七、数据库连接池 一、pymysql 可以使用pip install pymysql安装py…...

RFdiffusion EuclideanDiffuser类解读

EuclideanDiffuser 是 RFdiffusion 中的一个关键类,专门设计用于对**三维空间中的点(如蛋白质的原子坐标)**进行扩散处理。它通过逐步向这些点添加噪音来实现扩散过程,从而为扩散模型提供输入数据,并通过逆扩散还原这些数据。 get_beta_schedule函数源代码 def get_beta…...

Flutter实现气泡提示框学习

前置知识点学习 GlobalKey GlobalKey 是 Flutter 中一个非常重要的概念&#xff0c;它用于唯一标识 widget 树中的特定 widget&#xff0c;并提供对该 widget 的访问。这在需要跨越 widget 树边界进行交互或在 widget 树重建时保持状态时尤其有用。 GlobalKey 的作用 唯一标…...

vue3 路由守卫

在Vue 3中&#xff0c;路由守卫是一种控制和管理路由跳转的机制。它允许你在执行导航前后进行一些逻辑处理&#xff0c;比如权限验证、数据预取等&#xff0c;从而增强应用的安全性和效率。路由守卫分为几种不同的类型&#xff0c;每种类型的守卫都有其特定的应用场景。 其实路…...

【MATLAB源码-第218期】基于matlab的北方苍鹰优化算法(NGO)无人机三维路径规划,输出做短路径图和适应度曲线.

操作环境&#xff1a; MATLAB 2022a 1、算法描述 北方苍鹰优化算法&#xff08;Northern Goshawk Optimization&#xff0c;简称NGO&#xff09;是一种新兴的智能优化算法&#xff0c;灵感来源于北方苍鹰的捕猎行为。北方苍鹰是一种敏捷且高效的猛禽&#xff0c;广泛分布于北…...

如何控制自己玩手机的时间?两台苹果手机帮助自律

对一些人来说&#xff0c;被智能手机“绑架”是一件心甘情愿的事&#xff0c;和它相处的一天中&#xff0c;不必面对现实的压力&#xff0c;它就像个“舒适区”。这是因为在使用手机的过程中&#xff0c;应用程序&#xff08;尤其是游戏和社交媒体应用&#xff09;会不断刺激大…...

【java-Neo4j 5开发入门篇】-最新Java开发Neo4j

系列文章目录 前言 上一篇文章讲解了Neo4j的基本使用&#xff0c;本篇文章对Java操作Neo4j进行入门级别的阐述&#xff0c;方便读者快速上手对Neo4j的开发。 一、开发环境与代码 1.docker 部署Neo4j #这里使用docker部署Neo4j,需要镜像加速的需要自行配置 docker run --name…...

告别串口助手:用STM32CubeIDE和HAL库,手把手教你打造自己的IAP上位机(附源码)

从零构建STM32 IAP上位机&#xff1a;C#实战与协议解析全指南 在嵌入式开发中&#xff0c;IAP&#xff08;In Application Programming&#xff09;技术为设备固件升级提供了极大便利&#xff0c;但一个稳定可靠的上位机软件往往是整个流程中最薄弱的环节。市面上通用的串口助手…...

从MATLAB到FPGA:高效生成三种波形COE文件的实战指南

1. COE文件格式解析与FPGA应用场景 COE文件是Xilinx FPGA设计中用于初始化Block RAM&#xff08;BRAM&#xff09;的标准文件格式。我第一次接触这种文件时&#xff0c;发现它其实就是一个带有特定格式要求的文本文件&#xff0c;但正是这种简单的结构&#xff0c;让它成为MATL…...

qmcdump:3步轻松解锁QQ音乐加密文件,实现跨设备音乐自由

qmcdump&#xff1a;3步轻松解锁QQ音乐加密文件&#xff0c;实现跨设备音乐自由 【免费下载链接】qmcdump 一个简单的QQ音乐解码&#xff08;qmcflac/qmc0/qmc3 转 flac/mp3&#xff09;&#xff0c;仅为个人学习参考用。 项目地址: https://gitcode.com/gh_mirrors/qm/qmcdu…...

SpringBoot生产级监控与异常日志运维实战,线上项目稳定排查不慌

SpringBoot项目本地开发调试正常&#xff0c;部署到生产环境后频繁出现接口报错、服务卡顿、内存溢出、接口响应缓慢、数据库连接耗尽等线上问题&#xff0c;开发者无法实时查看项目运行状态&#xff0c;报错无精准日志定位&#xff0c;排查问题耗时费力&#xff0c;严重影响业…...

产品经理必备:Gemini3.1Pro高效撰写需求文档指南

做产品经理的人&#xff0c;大多都写过需求文档&#xff0c;但真正让人头疼的&#xff0c;往往不是“写”&#xff0c;而是“写得清楚”。 需求背景要交代&#xff0c;目标要明确&#xff0c;流程要完整&#xff0c;边界条件要说明&#xff0c;异常情况还不能漏&#xff0c;最后…...

多模型聚合平台在应对单一服务波动时的体验差异

&#x1f680; 告别海外账号与网络限制&#xff01;稳定直连全球优质大模型&#xff0c;限时半价接入中。 &#x1f449; 点击领取海量免费额度 多模型聚合平台在应对单一服务波动时的体验差异 在构建依赖大模型能力的应用时&#xff0c;开发者常常面临一个现实挑战&#xff1…...

半导体制造中OPC技术与蚀刻偏差的挑战与创新

1. 半导体制造中的OPC技术演进与蚀刻偏差挑战在28nm及更先进制程节点中&#xff0c;光学邻近效应校正(OPC)技术面临着前所未有的精度挑战。我曾在某次技术攻关中亲眼见证&#xff1a;当特征尺寸缩小到40nm以下时&#xff0c;单纯的光学模型校正误差会突然呈现非线性增长。这种现…...

ERP生产模块设计:从BOM到完工

一、基础数据&#xff1a;BOM与工艺路线生产模块的核心是BOM&#xff08;物料清单&#xff09;和工艺路线。这两个搞不清楚&#xff0c;生产计划无从谈起。1. BOM表结构CREATE TABLE bd_bom (id BIGINT PRIMARY KEY AUTO_INCREMENT,bom_no VARCHAR(30) NOT NULL UNIQUE,materia…...

5个关键步骤让zotero-pdf-translate翻译功能重新工作:完整解决方案指南

5个关键步骤让zotero-pdf-translate翻译功能重新工作&#xff1a;完整解决方案指南 【免费下载链接】zotero-pdf-translate Translate PDF, EPub, webpage, metadata, annotations, notes to the target language. Support 20 translate services. 项目地址: https://gitcode…...

刚续费Basic的你务必立刻阅读:官方未公告的API调用封禁、历史图库自动归档及导出格式缩水清单

更多请点击&#xff1a; https://intelliparadigm.com 第一章&#xff1a;Midjourney Basic计划的核心定位与续费陷阱警示 Midjourney Basic 计划面向轻量级创作者&#xff0c;提供每月 200 张图像生成额度、标准排队优先级及基础风格控制能力。其核心定位并非长期主力生产工具…...