Flutter Windows应用访问本地Mongo/MySQL数据库的实现方法及示例代码
Flutter访问Windows本地MySQL/MongoDB的实现方案
一、访问本地MySQL
依赖选择
使用mysql_client包,它直接支持Flutter Desktop(Windows)环境连接MySQL数据库。
实现步骤&代码示例
- 在
pubspec.yaml中添加依赖:
dependencies: mysql_client: ^0.0.28 # 建议使用最新版本
- 执行
flutter pub get安装依赖。 - 连接及数据读写示例:
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。
实现步骤&代码示例
- 在
pubspec.yaml中添加依赖:
dependencies: mongo_dart: ^0.9.3 # 建议使用最新版本
- 执行
flutter pub get安装依赖。 - 连接及数据读写示例:
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
相关产品推荐
相关产品推荐

