flutter 操作mysql

引入模块

dependencies:
flutter:
sdk: flutter
mysql1: ^0.20.0

mysql helper 的代码

import 'dart:async';  
import 'package:mysql1/mysql1.dart';  class MySqlHelper {  static const _host = 'localhost';  static const _port = 3333;  static const _user = 'user';  static const _db = 'table';  static const _password = 'pass';  MySqlConnection? _connection;  MySqlHelper() {  _init();  }  Future<void> _init() async {  try {  _connection = await MySqlConnection.connect(ConnectionSettings(  host: _host,  port: _port,  user: _user,  db: _db,  password: _password,  ));  } catch (e) {  // Handle the exception appropriately, e.g., log the error or rethrow.  throw Exception('Failed to connect to the database: $e');  }  }  Future<int?> create(String tableName, Map<String, dynamic> data) async {  if (_connection == null) {  throw Exception('Database connection is not initialized');  }  var columns = data.keys.join(', ');  var placeholders = List.generate(data.length, (index) => '?').join(', ');  var values = data.values.toList();  var query = 'INSERT INTO $tableName ($columns) VALUES ($placeholders)';  var result = await _connection!.query(query, values);  return result.insertId;  }  Future<List<Map<String, dynamic>>> read(String tableName) async {  if (_connection == null) {  throw Exception('Database connection is not initialized');  }  var query = 'SELECT * FROM $tableName';  var results = await _connection!.query(query);  return results.map((row) => Map.fromEntries(row.asMap().entries.map((e) => MapEntry(e.key.toString(), e.value)))).toList();  }  Future<void> update(String tableName, Map<String, dynamic> data, String whereColumn, dynamic whereValue) async {  if (_connection == null) {  throw Exception('Database connection is not initialized');  }  var sets = data.entries.map((e) => '${e.key} = ?').join(', ');  var values = data.values.toList()..add(whereValue);  var query = 'UPDATE $tableName SET $sets WHERE $whereColumn = ?';  await _connection!.query(query, values);  }  Future<void> delete(String tableName, String whereColumn, dynamic whereValue) async {  if (_connection == null) {  throw Exception('Database connection is not initialized');  }  var query = 'DELETE FROM $tableName WHERE $whereColumn = ?';  await _connection!.query(query, [whereValue]);  }  Future<void> close() async {  if (_connection != null) {  await _connection!.close();  _connection = null;  }  }  
}  // 使用示例  
void main() async {  final helper = MySqlHelper();  // 等待数据库连接初始化完成  await Future.delayed(Duration(seconds: 2)); // 仍然使用延迟作为示例,实际中应该监听连接状态  try {  // 插入数据  int? insertId = await helper.create('your_table_name', {  'column1': 'value1',  'column2': 'value2',  });  print('Inserted row with ID: $insertId');  // 读取数据  List<Map<String, dynamic>> rows = await helper.read('your_table_name');  for (var row in rows) {  print(row);  }  // 更新数据  await helper.update('your_table_name', {  'column1': 'updated_value1',  }, 'id', insertId);  // 删除数据  await helper.delete('your_table_name', 'id', insertId);  } catch (e) {  print('An error occurred: $e');  } finally {  // 关闭数据库连接  await helper.close();  }  
}
// 使用示例  
void main() async {final helper = MySqlHelper();// 等待数据库连接初始化完成  await Future.delayed(Duration(seconds: 2)); // 仍然使用延迟作为示例,实际中应该监听连接状态  try {// 插入数据  int? insertId = await helper.create('your_table_name', {'column1': 'value1','column2': 'value2',});print('Inserted row with ID: $insertId');// 读取数据  List<Map<String, dynamic>> rows = await helper.read('your_table_name');for (var row in rows) {print(row);}// 更新数据  await helper.update('your_table_name', {'column1': 'updated_value1',}, 'id', insertId);// 删除数据  await helper.delete('your_table_name', 'id', insertId);} catch (e) {print('An error occurred: $e');} finally {// 关闭数据库连接  await helper.close();}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/667698.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

6.0 MapReduce 服务使用教程

在学习了之前的 MapReduce 概念之后&#xff0c;我们应该已经知道什么是 Map 和 Reduce&#xff0c;并了解了他们的工作方式。 本章将学习如何使用 MapReduce。 Word Count Word Count 就是"词语统计"&#xff0c;这是 MapReduce 工作程序中最经典的一种。它的主要…

PyTorch中的nn.Embedding的使用、参数及案例

PyTorch中的nn.Embedding的使用 Embedding层在神经网络中主要起到降维或升维的作用。具体来说&#xff0c;它通过将输入&#xff08;通常是离散的、不连续的数据&#xff0c;如单词或类别&#xff09;映射到连续的向量空间&#xff0c;从而实现数据的降维或升维。 在降维方面&…

【SAR成像】基于RD、CS和ωk算法的合成孔径雷达成像算法原理与实现

基于RD、CS和ωk算法的合成孔径雷达成像算法实现 前言SAR基本概念雷达获取数据的几何关系低斜视角下的回波信号模型 RADARSAT-1主要参数数据预处理数据读取与再封装数据补零 成像算法坐标轴的产生RD算法距离压缩距离徙动矫正方位压缩 CS算法第一次相位相乘 变标后的信号第二次相…

Qt应用软件【协议篇】http协议get、post示例

文章目录 QT Http的APIHTTP GET 请求示例HTTP POST 请求示例伪装chrome浏览器get请求 QT Http的API QNetworkAccessManager 作用&#xff1a;管理所有的网络请求&#xff0c;是发送请求和接收响应的中心点。主要功能&#xff1a; 发送HTTP请求&#xff08;GET, POST, PUT, DE…

基于若依的ruoyi-nbcio流程管理系统自定义业务实现一种简单的动态任务标题需求

更多ruoyi-nbcio功能请看演示系统 gitee源代码地址 前后端代码&#xff1a; https://gitee.com/nbacheng/ruoyi-nbcio 演示地址&#xff1a;RuoYi-Nbcio后台管理系统 更多nbcio-boot功能请看演示系统 gitee源代码地址 后端代码&#xff1a; https://gitee.com/nbacheng/n…

[Android] 240204批量生成联系人,短信,通话记录的APK

平常在做测试的时候&#xff0c;需要批量生成很多测试数据&#xff1b; 陌生人 联系人名字的生成支持随机生成&#xff0c;也可以自定义生成&#xff0c;自定义生成陌生人的数据&#xff0c;联系人的名字是否带索引&#xff1b; 通话记录 随机生成通话记录&#xff0c;在生…

云数据库RDS云监控

1. 什么是云数据库RDS&#xff1f;它有哪些特点&#xff1f; 云数据库RDS是一种在线关系型数据库服务&#xff0c;它具备的特点包括&#xff1a; 安全可靠&#xff1a;提供了容灾、备份、恢复等高可用性功能&#xff0c;确保数据的安全与可靠。弹性伸缩&#xff1a;用户可以根…

free5GC+UERANSIM

使用arp、ifconfig、docker inspect及网桥brctl 相关命令&#xff0c;收集容器IP及Mac地址相关信息&#xff0c;可以梳理出UERANSIMfree5GC模拟环境组网&#xff0c;如下图所示&#xff1a; 如上图所示&#xff1a;环境基于ubuntu 18.04 VMware虚机部署&#xff0c;5GC网元分别…

【React】memo()、useCallback()、useMemo()的区别及使用场景

介绍React中三个hooks方法memo useCallback useMemo的作用及使用场景示例 一、React.memo()&#xff1a;用来控制函数组件的重新渲染&#xff0c;将组件作为参数&#xff0c;函数的返回值是一个新的组件。二、React.useCallback()&#xff1a;将回调函数及依赖项数组作为参数传…

【Python】Unindent does not match any outer indentation level

这个问题一般是代码缩进问题导致的&#xff0c;规范代码缩进格式即可&#xff0c;如图&#xff1a; 这个问题是因为报异常的那行代码下的方法缩进问题导致&#xff0c;def calendar_f(): 方法名前面多了一个空格。 删除空格即可解决此问题。

【python】python爱心代码【附源码】

一、实现效果&#xff1a; 欢迎来到英杰社区https://bbs.csdn.net/topics/617804998 二、完整代码&#xff1a; import math import random import threading import time from math import sin, cos, pi, log from tkinter import * import re# 烟花相关设置 Fireworks [] m…

Fink CDC数据同步(五)Kafka数据同步Hive

6、Kafka同步到Hive 6.1 建映射表 通过flink sql client 建Kafka topic的映射表 CREATE TABLE kafka_user_topic(id int,name string,birth string,gender string ) WITH (connector kafka,topic flink-cdc-user,properties.bootstrap.servers 192.168.0.4:6668…

iview 页面中判断溢出才使用Tooltip组件

使用方法 <TextTooltip :content"contentValue"></TextTooltip> 给Tooltip再包装一下 <template><Tooltip transfer :content"content" :theme"theme" :disabled"!showTooltip" :max-width"300" :p…

滴滴面经相关知识整理(基于newbing)

Vue2和Vue3有许多不同之处&#xff0c;以下是一些主要的区别&#xff1a; 数据劫持方式&#xff1a;Vue2主要是通过Object.defineProperty劫持数据&#xff0c;对于新增的对象属性&#xff0c;使用数组修改元素&#xff0c;视图无法更新1。 性能和体积&#xff1a;Vue3的运行速…

Spring auto-configuration的使用

简介 在构建Maven项目时&#xff0c;使用Spring Boot自动配置可以使项目更易于集成和使用。本文将向您展示如何创建一个Maven项目&#xff0c;并使用Spring Boot自动配置使其能够被其他组件方便地依赖。 步骤 1. 添加Spring Boot Starter依赖 确保您的Maven项目具有必要的S…

跟着cherno手搓游戏引擎【20】混合(blend)

抽象&#xff1a; Renderer.h: #pragma once #include"RenderCommand.h" #include "OrthographicCamera.h" #include"Shader.h" namespace YOTO {class Renderer {public:static void Init();static void BeginScene(OrthographicCamera& …

天拓四方:边缘计算网关功能、特点与应用举例

传统的数据处理方式面临网络延迟、带宽限制和安全风险等问题。为了解决这些问题&#xff0c;边缘计算技术应运而生&#xff0c;而边缘计算网关作为其核心组件&#xff0c;正发挥着越来越重要的作用。边缘计算网关位于数据源和云数据中心之间。它具备数据采集、协议转换、数据处…

Oracle 执行计划(Explain Plan)

执行计划&#xff1a;一条查询语句在 ORACLE 中的执行过程或访问路径的描述。即就是对一个查询任务&#xff0c;做出一份怎样去完成任务的详细方案。 如果要分析某条 SQL 的性能问题&#xff0c;通常我们要先看 SQL 的执行计划&#xff0c;看看 SQL 的每一步执行是否存在问题。…

视觉SLAM十四讲学习笔记(一)初识SLAM

目录 前言 一、传感器 1 传感器分类 2 相机 二、经典视觉 SLAM 框架 1 视觉里程计 2 后端优化 3 回环检测 4 建图 5 SLAM系统 三、SLAM 问题的数学表述 四、Ubuntu20.04配置SLAM十四讲 前言 SLAM: Simultaneous Localization and Mapping 同时定位与地图构建&#…

交友系统---让陌生人变成熟悉人的过程。APP小程序H5三端源码交付,支持二开。

随着社交网络的发展和普及&#xff0c;人们之间的社交模式正在发生着深刻的变革。传统的线下交友方式已经逐渐被线上交友取而代之。而同城交友正是这一趋势的产物&#xff0c;它利用移动互联网的便利性&#xff0c;将同城内的人们连接在一起&#xff0c;打破了时空的限制&#…