You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Flutter Windows应用访问本地Mongo/MySQL数据库的实现方法及示例代码

Flutter访问Windows本地MySQL/MongoDB的实现方案

一、访问本地MySQL

依赖选择

使用mysql_client包,它直接支持Flutter Desktop(Windows)环境连接MySQL数据库。

实现步骤&代码示例

  1. 在pubspec.yaml中添加依赖:
dependencies:
  mysql_client: ^0.0.28 # 建议使用最新版本
  1. 执行flutter pub get安装依赖。
  2. 连接及数据读写示例:
import 'package:mysql_client/mysql_client.dart';

Future<void> main() async {
  // 连接本地MySQL,替换为你的用户名、密码、数据库名
  final conn = await MySQLConnection.createConnection(
    host: '127.0.0.1',
    port: 3306,
    userName: 'root',
    password: 'your_password',
    databaseName: 'your_database',
  );

  await conn.connect();

  // 插入数据
  await conn.execute(
    "INSERT INTO users (name, email) VALUES (:name, :email)",
    {"name": "John Doe", "email": "john@example.com"},
  );

  // 查询数据
  final result = await conn.execute("SELECT * FROM users WHERE name = :name", {"name": "John Doe"});
  for (final row in result.rows) {
    print("ID: ${row.colAt(0)}, Name: ${row.colAt(1)}, Email: ${row.colAt(2)}");
  }

  // 更新数据
  await conn.execute(
    "UPDATE users SET email = :new_email WHERE name = :name",
    {"new_email": "john_updated@example.com", "name": "John Doe"},
  );

  // 删除数据
  await conn.execute("DELETE FROM users WHERE name = :name", {"name": "John Doe"});

  await conn.close();
}

注意事项

  • 确保本地MySQL服务处于运行状态,配置文件my.cnf中绑定地址需设为127.0.0.1或0.0.0.0以允许本地连接。
  • 检查Windows防火墙是否放行3306端口,避免连接被拦截。

二、访问本地MongoDB

依赖选择

使用mongo_dart包,支持Flutter Desktop环境连接MongoDB。

实现步骤&代码示例

  1. 在pubspec.yaml中添加依赖:
dependencies:
  mongo_dart: ^0.9.3 # 建议使用最新版本
  1. 执行flutter pub get安装依赖。
  2. 连接及数据读写示例:
import 'package:mongo_dart/mongo_dart.dart';

Future<void> main() async {
  // 连接本地MongoDB,替换为你的数据库名
  final db = Db('mongodb://127.0.0.1:27017/your_database');
  await db.open();

  // 获取指定集合
  final usersCollection = db.collection('users');

  // 插入文档
  await usersCollection.insertOne({
    'name': 'Jane Smith',
    'email': 'jane@example.com',
    'age': 28
  });

  // 查询文档
  final queryResult = await usersCollection.findOne(where.eq('name', 'Jane Smith'));
  if (queryResult != null) {
    print("User info: ${queryResult}");
  }

  // 更新文档
  await usersCollection.updateOne(
    where.eq('name', 'Jane Smith'),
    modify.set('email', 'jane_updated@example.com'),
  );

  // 删除文档
  await usersCollection.deleteOne(where.eq('name', 'Jane Smith'));

  await db.close();
}

注意事项

  • 确保本地MongoDB服务已启动,默认27017端口无需额外配置(若修改过端口需同步调整连接字符串)。
  • 若MongoDB开启了认证,连接字符串需加入账号信息:mongodb://username:password@127.0.0.1:27017/your_database

内容的提问来源于stack exchange,提问作者Ashik

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.15 16:05:58