Flutter SQL查询插件athena_sql的使用

Flutter SQL查询插件athena_sql的使用

AthenaSQL 是一个受古希腊女神雅典娜智慧和策略启发的强大且优雅的Dart SQL查询构建器。AthenaSQL 将古代帝国的辉煌与力量带入数字时代,为您的 Dart 项目提供了表达性强且用户友好的API来构建和管理SQL查询。

AthenaSQL Logo

CI pub package licence maintained with melos discord

特性

  • 链式和可读性强的API用于构造SQL查询。
  • 支持各种SQL语句,如SELECT、INSERT、UPDATE、DELETE和CREATE TABLE。
  • 高级查询功能,如联接、子查询、别名、聚合函数等。
  • 表创建时支持列、数据类型和约束(主键、外键、唯一和检查)。
  • 可扩展架构以支持自定义数据类型和附加功能。

安装

要使用Posrgresql或MySql与AthenaSQL,安装以下包:

对于Posrgresql:

dart pub add athena_postgres

对于MySQL:

dart pub add athena_mysql

它们都依赖于athena_sql

如果您只需要SQL构建器而没有任何特定数据库的功能,可以直接安装athena_sql:

dart pub add athena_sql

然后,在您的Dart代码中导入库:

import 'package:athena_sql/athena_sql.dart';

使用

AthenaSQL 提供了一个直观且链式的API来为各种目的构建SQL查询。以下是一些入门示例:

SELECT

final query = await athenaSQL.select(["id", "name", "email"])
  .from("users")
  .where((c) => 
    (c["active"].eq(true)) &&
    ((c["age"] >= 18) ||
    (c["role"] == "admin"))
  ).run();

INSERT

final insertedAmount = await athenaSQL.insert
  .into("users")
  .values({
    "name": "John Doe",
    "email": "john.doe@example.com"
  })
  .run();

UPDATE

final query = AthenaSQL.update()
  .table("users")
  .set({
    "name": "Jane Doe",
    "email": "jane.doe@example.com",
  })
  .where("id = 1")
  .run();

DELETE

final query = AthenaSQL.delete()
  .from("users")
  .where("id = 1")
  .run();

CREATE TABLE

final query = AthenaSQL.createTable("users")
  .column((c) => c.serial("id").primaryKey())
  .column((c) => c.varchar("name", 50).notNull())
  .run();

TODO

  • ❌ 更新构建器
  • ❌ 删除构建器
  • ❌ 创建表时的约束
  • ❌ 联接
  • ❌ 子查询

文档

有关如何使用AthenaSQL的更多信息,请参阅官方文档

贡献

我们欢迎对AthenaSQL的贡献!如果您有兴趣贡献,请阅读我们的贡献指南,并提交一个拉取请求。

许可证

AthenaSQL 在 BSD 3-Clause License 下发布。


示例代码

以下是athena_sql的一个完整示例代码:

import 'package:athena_sql/athena_sql.dart';

void main() async {
  // 初始化 AthenaSQL 实例
  final athenaSQL = AthenaSQL();

  // SELECT 查询示例
  final selectQuery = await athenaSQL.select(["id", "name", "email"])
    .from("users")
    .where((c) => 
      (c["active"].eq(true)) &&
      ((c["age"] >= 18) ||
      (c["role"] == "admin"))
    ).run();

  print(selectQuery);

  // INSERT 查询示例
  final insertQuery = await athenaSQL.insert
    .into("users")
    .values({
      "name": "John Doe",
      "email": "john.doe@example.com"
    })
    .run();

  print(insertQuery);

  // UPDATE 查询示例
  final updateQuery = await AthenaSQL.update()
    .table("users")
    .set({
      "name": "Jane Doe",
      "email": "jane.doe@example.com",
    })
    .where("id = 1")
    .run();

  print(updateQuery);

  // DELETE 查询示例
  final deleteQuery = await AthenaSQL.delete()
    .from("users")
    .where("id = 1")
    .run();

  print(deleteQuery);

  // CREATE TABLE 查询示例
  final createTableQuery = await AthenaSQL.createTable("users")
    .column((c) => c.serial("id").primaryKey())
    .column((c) => c.varchar("name", 50).notNull())
    .run();

  print(createTableQuery);
}

更多关于Flutter SQL查询插件athena_sql的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter SQL查询插件athena_sql的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


当然,下面是一个关于如何在Flutter项目中使用athena_sql插件进行SQL查询的示例代码。athena_sql插件允许你在Flutter应用中执行SQL查询,以管理本地数据库。

首先,确保你已经在pubspec.yaml文件中添加了athena_sql依赖:

dependencies:
  flutter:
    sdk: flutter
  athena_sql: ^x.y.z  # 请替换为最新版本号

然后,运行flutter pub get来获取依赖。

接下来,我们编写一个示例代码,展示如何使用athena_sql进行基本的数据库操作,包括创建表、插入数据、查询数据等。

示例代码

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

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

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: Text('Athena SQL Demo'),
        ),
        body: AthenaSqlDemo(),
      ),
    );
  }
}

class AthenaSqlDemo extends StatefulWidget {
  @override
  _AthenaSqlDemoState createState() => _AthenaSqlDemoState();
}

class _AthenaSqlDemoState extends State<AthenaSqlDemo> {
  late DatabaseHelper _dbHelper;

  @override
  void initState() {
    super.initState();
    _dbHelper = DatabaseHelper();
    _initDatabase();
  }

  Future<void> _initDatabase() async {
    // 打开数据库连接(假设数据库名为test.db)
    await _dbHelper.openDatabase();

    // 创建表
    await _dbHelper.createTable();

    // 插入数据
    await _dbHelper.insertData();

    // 查询数据并显示
    List<Map<String, dynamic>> results = await _dbHelper.queryData();
    print(results);
  }

  @override
  Widget build(BuildContext context) {
    return Center(
      child: Text('Check console for SQL query results'),
    );
  }
}

class DatabaseHelper {
  late Database _database;

  Future<void> openDatabase() async {
    // 打开数据库连接(路径可以自定义)
    _database = await openDatabase(
      join(await getDatabasesPath(), 'test.db'),
      onCreate: (db, version) {
        // 数据库创建时的回调,可以在这里创建初始表
      },
      version: 1,
    );
  }

  Future<void> createTable() async {
    // 创建表
    await _database.execute('''
      CREATE TABLE IF NOT EXISTS users (
        id INTEGER PRIMARY KEY AUTOINCREMENT,
        name TEXT NOT NULL,
        age INTEGER NOT NULL
      )
    ''');
  }

  Future<void> insertData() async {
    // 插入数据
    await _database.insert('users', {
      'name': 'Alice',
      'age': 30,
    });

    await _database.insert('users', {
      'name': 'Bob',
      'age': 25,
    });
  }

  Future<List<Map<String, dynamic>>> queryData() async {
    // 查询数据
    List<Map<String, dynamic>> results = await _database.query('users');
    return results;
  }
}

解释

  1. 依赖管理:在pubspec.yaml中添加athena_sql依赖。
  2. 数据库操作
    • openDatabase:打开数据库连接。
    • createTable:创建一个名为users的表。
    • insertData:向users表中插入数据。
    • queryData:从users表中查询所有数据。
  3. UI:在Flutter的UI中,通过_initDatabase方法在initState中初始化数据库,并在控制台打印查询结果。

请注意,athena_sql实际上是一个假想的插件名称,因为Flutter社区中通常使用sqflite等插件进行本地数据库操作。不过,上述代码结构展示了如何在Flutter应用中管理本地数据库,如果你找到一个实际的SQL查询插件,代码结构会非常相似,只需替换相应的数据库操作方法即可。

对于实际使用中的插件,请参考官方文档或插件仓库中的示例代码。

回到顶部