Flutter数据库管理插件mysql_manager的使用

Flutter数据库管理插件mysql_manager的使用

MySQLManager 是一个用于控制与 MySQL 或 MariaDB 数据库连接的依赖项。它使用了 mysql1 作为数据库连接的驱动程序。通过简单的 .env 文件即可完成数据库连接配置!

特性

通过 .env 文件连接到 MySQL 数据库并轻松管理连接。你也可以将凭据作为 Map 传递,但使用 .env 文件会更加简单。

开始使用

你只需在应用的根目录下设置你的 .env 文件:

db=YOUR_DB_NAME
host=YOUR_HOST
user=YOUR_MYSQL_USER
password=YOUR_PASSWORD
port=PORT

一旦上述配置完成,你可以阅读下面的用法部分。

使用方法

import 'package:mysql_manager/src/mysql_manager.dart';

// 访问 GitHub 仓库的测试文件夹,以检查你的 .env 文件是否配置正确。
// https://github.com/raul94a/mysql_manager

void main() async {
  // 使用此依赖项连接到 MySQL 的两种方式
  // 1. 使用 .env 文件
  // 你应该在应用程序的根目录创建一个 .env 文件。
  // 此文件将具有以下结构(添加更多属性不会有问题)

  // db=YOUR_DB_NAME
  // host=YOUR_HOST
  // user=YOUR_MYSQL_USER
  // password=YOUR_PASSWORD
  // port=PORT
  // 一旦 .env 文件包含凭据,你就可以像下面这样轻松连接:

  // 只有通过实例获取器才能实例化 MySQLManager
  final MySQLManager manager = MySQLManager.instance;
  // 初始化连接。init 方法将返回一个 MySqlConnection 对象
  final conn = await manager.init();
  // 你可以将 SQL 语句传递给 query 方法
  final results = await conn.query('select * from test');
  // results 将是一个迭代器,因此可以遍历它
  for (var r in results) {
    // 返回数据格式为 Map<String,dynamic>
    print(r.fields);
  }

  await conn.close();
  // 你也可以使用 await manager.close();

  // 2. 使用配置映射。此方法与第一种方法相同,但有一点不同
  // final conn = await manager.init(false, {'db'='YOUR_DB', 'host': 'YOUR_HOST', 'user':'YOUR_USER', 'password':'YOUR_PASSWORD', 'port': port}); // => port 是一个整数,要小心
}

示例代码

import 'package:mysql_manager/src/mysql_manager.dart';

// 访问 GitHub 仓库的测试文件夹,以检查你的 .env 文件是否配置正确。
// https://github.com/raul94a/mysql_manager

void main() async {
  // 使用此依赖项连接到 MySQL 的两种方式
  // 1. 使用 .env 文件
  // 你应该在应用程序的根目录创建一个 .env 文件。
  // 此文件将具有以下结构(添加更多属性不会有问题)

  // db=YOUR_DB_NAME
  // host=YOUR_HOST
  // user=YOUR_MYSQL_USER
  // password=YOUR_PASSWORD
  // port=PORT
  // 一旦 .env 文件包含凭据,你就可以像下面这样轻松连接:

  // 只有通过实例获取器才能实例化 MySQLManager
  final MySQLManager manager = MySQLManager.instance;
  // 初始化连接。init 方法将返回一个 MySqlConnection 对象
  final conn = await manager.init();
  // 你可以将 SQL 语句传递给 execute 方法
  final results = await conn.execute('select * from test');
  // results 将是一个迭代器,因此可以遍历它
  for (var r in results) {
    // 返回数据格式为 Map<String,dynamic>
    print(r.rows);
  }

  await conn.close();
  // 你也可以使用 await manager.close();

  // 2. 使用配置映射。此方法与第一种方法相同,但有一点不同
  // final conn = await manager.init(false, {'db'='YOUR_DB', 'host': 'YOUR_HOST', 'user':'YOUR_USER', 'password':'YOUR_PASSWORD', 'port': port}); // => port 是一个整数,要小心
}

更多关于Flutter数据库管理插件mysql_manager的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter数据库管理插件mysql_manager的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


当然,关于如何在Flutter中使用mysql_manager插件进行数据库管理,下面是一个基本的代码示例。请注意,mysql_manager是一个假定的插件名称,因为Flutter生态系统中并没有一个广泛认可的名为mysql_manager的官方插件来直接管理MySQL数据库。通常,Flutter应用通过后端服务(如Node.js、Python Flask/Django、Dart后端等)来与MySQL数据库交互,而不是直接在客户端管理MySQL。

不过,为了演示如何在Flutter中通过某种方式与MySQL数据库交互,我们可以假设有一个类似mysql_manager的插件,或者我们通过一个REST API来间接实现这一功能。以下是一个使用Flutter和Dart的HTTP客户端库(如dio)与Node.js后端交互的示例,Node.js后端再与MySQL数据库通信。

Flutter前端代码

首先,在Flutter项目中添加dio依赖:

# 在 pubspec.yaml 文件中
dependencies:
  flutter:
    sdk: flutter
  dio: ^4.0.0  # 请检查最新版本号

然后,在Flutter中使用dio发送HTTP请求:

import 'package:flutter/material.dart';
import 'package:dio/dio.dart';

void main() {
  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: Text('Flutter MySQL Interaction'),
        ),
        body: Center(
          child: MyHomePage(),
        ),
      ),
    );
  }
}

class MyHomePage extends StatefulWidget {
  @override
  _MyHomePageState createState() => _MyHomePageState();
}

class _MyHomePageState extends State<MyHomePage> {
  final Dio _dio = Dio();
  String _responseData = '';

  @override
  Widget build(BuildContext context) {
    return Column(
      mainAxisAlignment: MainAxisAlignment.center,
      children: <Widget>[
        Text('Data from MySQL:'),
        Text(_responseData),
        ElevatedButton(
          onPressed: _fetchData,
          child: Text('Fetch Data'),
        ),
      ],
    );
  }

  void _fetchData() async {
    try {
      Response response = await _dio.get('http://your-backend-url.com/api/getdata');
      setState(() {
        _responseData = response.data.toString();
      });
    } catch (e) {
      print(e);
      setState(() {
        _responseData = 'Error fetching data: ${e.message}';
      });
    }
  }
}

Node.js后端代码

这里是一个简单的Node.js后端示例,使用Express和MySQL2库:

# 首先安装所需的npm包
npm install express mysql2 cors

然后创建一个server.js文件:

const express = require('express');
const mysql = require('mysql2');
const cors = require('cors');

const app = express();
const port = 3000;

app.use(cors());  // 允许跨域请求

// 配置MySQL连接
const connection = mysql.createConnection({
  host: 'localhost',
  user: 'your-mysql-username',
  password: 'your-mysql-password',
  database: 'your-database-name'
});

connection.connect(err => {
  if (err) {
    console.error('Error connecting to MySQL:', err);
    return;
  }
  console.log('Connected to MySQL');
});

// 定义一个API端点来获取数据
app.get('/api/getdata', (req, res) => {
  const sql = 'SELECT * FROM your_table_name';
  connection.query(sql, (error, results) => {
    if (error) {
      console.error('Error executing query:', error);
      res.status(500).send('Error executing query');
      return;
    }
    res.json(results);
  });
});

app.listen(port, () => {
  console.log(`Server running at http://localhost:${port}`);
});

运行步骤

  1. 确保MySQL数据库正在运行,并且有一个包含数据的表。
  2. 启动Node.js后端服务器:node server.js
  3. 在Flutter项目中运行应用。
  4. 点击“Fetch Data”按钮,Flutter应用将通过Node.js后端从MySQL数据库获取数据,并在界面上显示。

这个示例展示了如何在Flutter应用中通过HTTP请求与Node.js后端通信,然后Node.js后端再与MySQL数据库进行交互。这是Flutter应用中常见的模式,因为直接在客户端管理MySQL数据库并不安全,也不符合最佳实践。

回到顶部