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

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.lryc.cn/news/296306.html

相关文章:

  • c++阶梯之类与对象(中)< 续集 >
  • GitLag所有操作-汇总
  • JSch - 配置SFTP服务器SSH免密登录
  • RISC-V指令格式
  • Linux 文件比较工具
  • 【GAMES101】Lecture 17 材质
  • 数模.matlab画图
  • [word] word表格表头怎么取消重复出现? #媒体#笔记#职场发展
  • vue项目开发vscode配置
  • BUUCTF-Real-[Tomcat]CVE-2017-12615
  • Qt应用软件【协议篇】http协议get、post示例
  • 如何选择Centos的替代者
  • 【Java数据结构】ArrayList和LinkedList的遍历
  • springboot163美食推荐商城的设计与实现
  • [机器学习]K-means——聚类算法
  • 并发编程 java锁机制
  • Onerugged三防平板厂家丨三年质保承诺丨三防平板PAD
  • Android 系统启动流程
  • 鸿蒙学习-app.json5配置文件
  • 华为OD机试 - 智能成绩表( Python C C++ JavaGo JS PHP)
  • 训练集,验证集,测试集比例
  • Altium Designer(AD)加载常用元器件库到工程图文教程及视频演示
  • Java学习笔记2024/2/8
  • 【安防】三个问题:IPC和ITC主要的差异点和相同点 、影响图像成像效果的因素有哪些、摩尔纹如何产生的和消除方法
  • Windows 安装 MySQL 最新最简教程
  • uniapp 本地存储的方式
  • 25、数据结构/二叉树相关练习20240207
  • 数据结构——D/二叉树
  • redis:七、集群方案(主从复制、哨兵模式、分片集群)和面试模板
  • 没有事情做 随手写的小程序