Flutter数据库操作插件db_lib的使用

Flutter数据库操作插件db_lib的使用

在本篇教程中,我们将介绍如何使用 db_lib 插件进行数据库操作。db_lib 是一个用于简化数据库操作的库,适用于移动端和Web端。

安装 db_lib

首先,在项目的 pubspec.yaml 文件中添加 db_lib 的依赖:

dependencies:
  db_lib: ^1.0.0

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

初始化数据库

在项目中初始化数据库实例。我们可以通过创建一个单例类来实现这一点:

import 'package:db_lib/db_lib.dart';

class DatabaseHelper {
  static final _databaseHelper = DatabaseHelper._internal();
  factory DatabaseHelper() => _databaseHelper;
  DatabaseHelper._internal();

  Database? _database;

  Future<Database> get database async {
    if (_database != null) return _database!;
    _database = await initializeDatabase();
    return _database!;
  }

  Future<Database> initializeDatabase() async {
    // 获取数据库文件路径
    String path = await getDatabasesPath();
    return openDatabase(
      "$path/my_database.db",
      version: 1,
      onCreate: (db, version) async {
        // 创建表
        await db.execute(
          "CREATE TABLE my_table(id INTEGER PRIMARY KEY, name TEXT, age INTEGER)",
        );
      },
    );
  }
}

插入数据

使用 DatabaseHelper 类插入数据到数据库表中:

Future<void> insertData(String name, int age) async {
  final db = await DatabaseHelper().database;
  await db.insert(
    'my_table',
    {'name': name, 'age': age},
    conflictAlgorithm: ConflictAlgorithm.replace,
  );
}

查询数据

查询数据库表中的数据:

Future<List<Map<String, dynamic>>> getData() async {
  final db = await DatabaseHelper().database;
  return await db.query('my_table');
}

更新数据

更新数据库表中的数据:

Future<int> updateData(int id, String name, int age) async {
  final db = await DatabaseHelper().database;
  return await db.update(
    'my_table',
    {'name': name, 'age': age},
    where: "id = ?",
    whereArgs: [id],
  );
}

删除数据

删除数据库表中的数据:

Future<int> deleteData(int id) async {
  final db = await DatabaseHelper().database;
  return await db.delete(
    'my_table',
    where: "id = ?",
    whereArgs: [id],
  );
}

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

1 回复

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


db_lib 是一个用于 Flutter 的数据库操作插件,它简化了与本地数据库的交互。以下是如何使用 db_lib 插件进行数据库操作的基本步骤。

1. 添加依赖

首先,在 pubspec.yaml 文件中添加 db_lib 插件的依赖:

dependencies:
  flutter:
    sdk: flutter
  db_lib: ^1.0.0  # 请使用最新版本

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

2. 初始化数据库

在使用 db_lib 之前,你需要初始化数据库。通常,你可以在应用的 main 函数中进行初始化。

import 'package:db_lib/db_lib.dart';

void main() async {
  WidgetsFlutterBinding.ensureInitialized();
  await DbLib.init('my_database.db');  // 初始化数据库,指定数据库名称
  runApp(MyApp());
}

3. 创建表

你可以使用 DbLib 提供的 execute 方法来执行 SQL 语句来创建表。

void createTable() async {
  await DbLib.execute('''
    CREATE TABLE IF NOT EXISTS users (
      id INTEGER PRIMARY KEY AUTOINCREMENT,
      name TEXT NOT NULL,
      age INTEGER NOT NULL
    )
  ''');
}

4. 插入数据

你可以使用 DbLibinsert 方法来插入数据。

void insertUser() async {
  Map<String, dynamic> user = {
    'name': 'John Doe',
    'age': 30,
  };
  await DbLib.insert('users', user);
}

5. 查询数据

你可以使用 DbLibquery 方法来查询数据。

void queryUsers() async {
  List<Map<String, dynamic>> users = await DbLib.query('users');
  users.forEach((user) {
    print('User: ${user['name']}, Age: ${user['age']}');
  });
}

6. 更新数据

你可以使用 DbLibupdate 方法来更新数据。

void updateUser() async {
  Map<String, dynamic> updatedUser = {
    'name': 'Jane Doe',
    'age': 25,
  };
  await DbLib.update('users', updatedUser, where: 'id = ?', whereArgs: [1]);
}

7. 删除数据

你可以使用 DbLibdelete 方法来删除数据。

void deleteUser() async {
  await DbLib.delete('users', where: 'id = ?', whereArgs: [1]);
}

8. 关闭数据库

在应用退出时,你可以选择关闭数据库。

void closeDatabase() async {
  await DbLib.close();
}

9. 完整示例

以下是一个完整的示例,展示了如何使用 db_lib 进行数据库操作:

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

void main() async {
  WidgetsFlutterBinding.ensureInitialized();
  await DbLib.init('my_database.db');
  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(title: Text('DB Lib Example')),
        body: Center(
          child: Column(
            mainAxisAlignment: MainAxisAlignment.center,
            children: [
              ElevatedButton(
                onPressed: createTable,
                child: Text('Create Table'),
              ),
              ElevatedButton(
                onPressed: insertUser,
                child: Text('Insert User'),
              ),
              ElevatedButton(
                onPressed: queryUsers,
                child: Text('Query Users'),
              ),
              ElevatedButton(
                onPressed: updateUser,
                child: Text('Update User'),
              ),
              ElevatedButton(
                onPressed: deleteUser,
                child: Text('Delete User'),
              ),
              ElevatedButton(
                onPressed: closeDatabase,
                child: Text('Close Database'),
              ),
            ],
          ),
        ),
      ),
    );
  }

  void createTable() async {
    await DbLib.execute('''
      CREATE TABLE IF NOT EXISTS users (
        id INTEGER PRIMARY KEY AUTOINCREMENT,
        name TEXT NOT NULL,
        age INTEGER NOT NULL
      )
    ''');
  }

  void insertUser() async {
    Map<String, dynamic> user = {
      'name': 'John Doe',
      'age': 30,
    };
    await DbLib.insert('users', user);
  }

  void queryUsers() async {
    List<Map<String, dynamic>> users = await DbLib.query('users');
    users.forEach((user) {
      print('User: ${user['name']}, Age: ${user['age']}');
    });
  }

  void updateUser() async {
    Map<String, dynamic> updatedUser = {
      'name': 'Jane Doe',
      'age': 25,
    };
    await DbLib.update('users', updatedUser, where: 'id = ?', whereArgs: [1]);
  }

  void deleteUser() async {
    await DbLib.delete('users', where: 'id = ?', whereArgs: [1]);
  }

  void closeDatabase() async {
    await DbLib.close();
  }
}
回到顶部