Flutter数据库连接插件athena_mysql的使用

Flutter数据库连接插件athena_mysql的使用

本插件提供了一个用于Athena的MySQL数据库。更多关于如何使用Athena的信息,请参阅Athena文档Athena仓库

使用方法

首先,安装插件:

$ dart pub add athena_mysql

然后创建一个数据库连接:

import 'package:athena_mysql/athena_mysql.dart';

final athenaSql = AthenaMySQL(
    MySqlDatabaseConfig(
        'localhost', // 必须
        3306, // 必须
        username: 'user', // 必须
        password: 'password', // 必须
        maxConnections: 5, // 必须
        databaseName: 'database', // 可选
        secure: true, // 可选
        collation: 'utf8mb4_general_ci', // 可选
        timeoutMs: 10000, // 可选
    ),
);

// 打开连接
await athenaSql.open();

示例代码

以下是一个完整的示例代码,展示了如何使用athena_mysql插件来创建表、插入数据并查询数据。

import 'package:athena_mysql/athena_mysql.dart';

void main(List<String> args) async {
  // 创建数据库连接
  final athenaSql = await AthenaMySQL.open(const AthenaMySqlEndpoint(
      host: 'localhost',
      port: 3306,
      userName: 'user',
      password: 'password'));

  // 创建用户表
  await athenaSql.create
      .table('users')
      .column((t) => t.string('name')) // 字符串类型
      .column((t) => t.string('email')) // 字符串类型
      .column((t) => t.int_('age')) // 整型
      .run();

  // 插入一条用户记录
  await athenaSql.insert
      .into('users')
      .values({'name': 'juan', 'email': 'juan@example.com'}) // 插入值
      .run();

  // 查询用户信息
  final selected = await athenaSql
      .select(['name', 'email']) // 选择字段
      .from('users') // 从users表中查询
      .as('u') // 设置别名
      .where((w) => w['u.name'].noEq('@name')) // 添加查询条件
      .run(mapValues: {'name': 'juan'}); // 替换参数
  print(selected); // 输出查询结果
}

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

1 回复

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


athena_mysql 是一个用于在 Flutter 应用中连接和操作 MySQL 数据库的插件。它基于 mysql1 包,提供了简单易用的 API 来执行 SQL 查询和操作。以下是如何在 Flutter 项目中使用 athena_mysql 的基本步骤。

1. 添加依赖

首先,你需要在 pubspec.yaml 文件中添加 athena_mysql 依赖:

dependencies:
  flutter:
    sdk: flutter
  athena_mysql: ^1.0.0  # 请检查最新版本

然后运行 flutter pub get 来安装依赖。

2. 导入包

在你的 Dart 文件中导入 athena_mysql

import 'package:athena_mysql/athena_mysql.dart';

3. 连接到 MySQL 数据库

使用 MySqlConnection.connect 方法来连接到 MySQL 数据库。你需要提供数据库的主机地址、端口、用户名、密码和数据库名称。

void connectToDatabase() async {
  var settings = ConnectionSettings(
    host: 'your_host',      // 例如 'localhost'
    port: 3306,             // 默认端口
    user: 'your_username',  // 例如 'root'
    password: 'your_password', // 你的密码
    db: 'your_database',    // 数据库名称
  );

  var conn = await MySqlConnection.connect(settings);
  print('Connected to database!');
  
  // 执行查询或操作
  var results = await conn.query('SELECT * FROM your_table');
  for (var row in results) {
    print(row);
  }

  // 关闭连接
  await conn.close();
}

4. 执行查询

你可以使用 conn.query 方法来执行 SQL 查询。查询结果是一个 Results 对象,你可以遍历它来获取每一行的数据。

var results = await conn.query('SELECT * FROM your_table');
for (var row in results) {
  print(row);
}

5. 执行插入、更新和删除操作

你可以使用 conn.query 方法来执行插入、更新和删除操作。例如:

// 插入数据
await conn.query('INSERT INTO your_table (column1, column2) VALUES (?, ?)', ['value1', 'value2']);

// 更新数据
await conn.query('UPDATE your_table SET column1 = ? WHERE id = ?', ['new_value', 1]);

// 删除数据
await conn.query('DELETE FROM your_table WHERE id = ?', [1]);

6. 处理事务

你可以使用 conn.transaction 方法来处理事务。事务中的所有操作要么全部成功,要么全部回滚。

await conn.transaction((ctx) async {
  await ctx.query('INSERT INTO your_table (column1) VALUES (?)', ['value1']);
  await ctx.query('UPDATE your_table SET column1 = ? WHERE id = ?', ['new_value', 1]);
});

7. 关闭连接

完成数据库操作后,记得关闭连接以释放资源。

await conn.close();

8. 错误处理

在执行数据库操作时,可能会遇到错误。你可以使用 try-catch 语句来捕获并处理这些错误。

try {
  var results = await conn.query('SELECT * FROM your_table');
  for (var row in results) {
    print(row);
  }
} catch (e) {
  print('Error: $e');
}

9. 完整示例

以下是一个完整的示例,展示了如何使用 athena_mysql 连接数据库、执行查询和关闭连接:

import 'package:athena_mysql/athena_mysql.dart';

void main() async {
  var settings = ConnectionSettings(
    host: 'localhost',
    port: 3306,
    user: 'root',
    password: 'password',
    db: 'test_db',
  );

  var conn = await MySqlConnection.connect(settings);
  print('Connected to database!');

  try {
    var results = await conn.query('SELECT * FROM users');
    for (var row in results) {
      print(row);
    }
  } catch (e) {
    print('Error: $e');
  } finally {
    await conn.close();
    print('Connection closed.');
  }
}
回到顶部