Flutter本地数据库管理插件simple_database的使用

发布于 1周前 作者 itying888 来自 Flutter

Flutter本地数据库管理插件simple_database的使用

插件介绍

simple_database 是一个简单的且轻量级的封装,用于管理Flutter应用中的本地数据存储。它提供了一对对象进行存储和检索的功能,而不是传统的键值对方式。这使得快速实现本地存储解决方案变得非常简单。

GitHub链接

使用方法

  1. pubspec.yaml 文件中添加依赖:

    dependencies:
      simple_database: ^x.x.x
    
  2. 创建数据库实例并添加数据:

```dart
void main() async {
    SimpleDatabase names = SimpleDatabase(name: 'names');

    await names.add('Bob');
    await names.add('Doug');

    for (var name in await names.getAllType<String>()) {
        print(name);
    }
}
```
  1. 处理混合类型的数据:
```dart
void main() async {
    SimpleDatabase names = SimpleDatabase(name: 'names');

    await names.add('Bob');
    await names.add(1); // 添加整数
    await names.add('Doug');

    // 获取所有字符串
    for (var name in await names.getAllType<String>()) {
        print(name);
    }

    // 获取指定索引处的整数
    var number = await names.getAtType<int>(1);
    print(number);
}
```
  1. 存储自定义对象:
需要实现 `toJson` 和 `fromJson` 方法来存储和恢复自定义对象。在创建 `SimpleDatabase` 实例时传递 `fromJson` 函数。

```dart
class SimpleClass {
    final int age;
    final String name;
    final double height;
    final bool gender;

    SimpleClass(this.age, this.name, this.height, this.gender);

    // 实现从 JSON 解析
    SimpleClass.fromJson(Map<String, dynamic> json) : age = json['age'], name = json['name'], height = json['height'], gender = json['gender'];

    // 实现到 JSON 转换
    Map<String, dynamic> toJson() => {
        'age': age,
        'name' : name,
        'height' : height,
        'gender' : gender,
    };
}

void main() async {
    SimpleDatabase classDB = SimpleDatabase(name: 'class', fromJson: (fromJson) =&gt; SimpleClass.fromJson(fromJson));

    SimpleClass john = SimpleClass(1, 'John', 5.2, true);  

    await classDB.add(john);

    SimpleClass person = await classDB.getAtType&lt;SimpleClass&gt;(0);
    print(person.name);
}

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

1 回复

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


当然,以下是如何在Flutter项目中使用simple_database插件来管理本地数据库的示例代码。simple_database是一个轻量级的Flutter插件,用于在本地存储和管理SQLite数据库。

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

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

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

接下来是一个完整的示例代码,展示如何使用simple_database来创建表、插入数据、查询数据以及更新数据。

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

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

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter Simple Database Demo',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: MyHomePage(),
    );
  }
}

class MyHomePage extends StatefulWidget {
  @override
  _MyHomePageState createState() => _MyHomePageState();
}

class _MyHomePageState extends State<MyHomePage> {
  SimpleDatabase? _db;

  @override
  void initState() {
    super.initState();
    initDatabase();
  }

  Future<void> initDatabase() async {
    _db = SimpleDatabase(
      'my_database.db',  // 数据库文件名
      version: 1,        // 数据库版本
    );

    // 创建表
    await _db!.createTable(
      'users', [
        ColumnDef('id', ColumnType.integer, primaryKey: true, autoIncrement: true),
        ColumnDef('name', ColumnType.text, notNull: true),
        ColumnDef('age', ColumnType.integer),
      ],
    );

    // 插入数据
    await _db!.insert('users', {'name': 'Alice', 'age': 30});
    await _db!.insert('users', {'name': 'Bob', 'age': 25});

    // 查询数据
    List<Map<String, dynamic>> users = await _db!.query('users');
    print('Users: $users');

    // 更新数据
    await _db!.update('users', {'age': 31}, where: 'name = ?', whereArgs: ['Alice']);

    // 再次查询数据以验证更新
    users = await _db!.query('users');
    print('Updated Users: $users');

    // 关闭数据库(通常在应用关闭时调用)
    // await _db!.close();
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Flutter Simple Database Demo'),
      ),
      body: Center(
        child: Text('Database operations are performed in initState.'),
      ),
    );
  }

  @override
  void dispose() {
    // 确保在dispose时关闭数据库连接
    _db?.close();
    super.dispose();
  }
}

代码解释

  1. 添加依赖:在pubspec.yaml中添加simple_database依赖。
  2. 初始化数据库:在initState方法中初始化SimpleDatabase实例,并创建表users
  3. 插入数据:使用insert方法向users表中插入数据。
  4. 查询数据:使用query方法从users表中查询数据,并打印到控制台。
  5. 更新数据:使用update方法更新users表中的数据。
  6. 关闭数据库:在dispose方法中关闭数据库连接(通常在实际应用中,你可能会在应用关闭时调用)。

注意:simple_database的具体API可能会根据版本有所不同,因此请参考其官方文档和示例代码以获取最新和最准确的信息。

回到顶部