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

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

app_sembast 是一个用于简化 Flutter 应用开发的本地数据库管理插件。它基于 sembast 数据库,为开发者提供了方便的方法来操作数据库。

支持

如果您喜欢我的工作并希望支持我,买杯咖啡会很棒!感谢您的支持!

Buy Me A Coffee


Mark Ivan BastoGitHub @MarkIvanDev


使用示例

以下是一个简单的示例,展示了如何使用 app_sembast 插件进行基本的数据库操作。

import 'package:app_sembast/app_sembast.dart';

void main() async {
  // 打开数据库文件
  final db = await getDatabaseFactory().openDatabase('test.db');

  // 关闭数据库文件
  await db.close();
}

完整示例代码

以下是一个完整的示例,演示了如何使用 app_sembast 插件进行增删改查操作。

import 'package:app_sembast/app_sembast.dart';
import 'dart:async';

void main() async {
  // 打开数据库文件
  final db = await getDatabaseFactory().openDatabase('test.db');

  // 插入数据
  await db.transaction((txn) async {
    await txn.put('my_store', {'name': 'John Doe', 'age': 30});
    await txn.put('my_store', {'name': 'Jane Doe', 'age': 28});
  });

  // 查询数据
  var result = await db.get('my_store', key: 'John Doe');
  print(result); // 输出: {name: John Doe, age: 30}

  // 更新数据
  await db.put('my_store', {'name': 'John Doe', 'age': 31}, key: 'John Doe');

  // 删除数据
  await db.delete('my_store', whereKey: 'Jane Doe');

  // 关闭数据库文件
  await db.close();
}

详细步骤说明

  1. 导入必要的库

    import 'package:app_sembast/app_sembast.dart';
    
  2. 打开数据库

    final db = await getDatabaseFactory().openDatabase('test.db');
    
  3. 插入数据

    await db.transaction((txn) async {
      await txn.put('my_store', {'name': 'John Doe', 'age': 30});
      await txn.put('my_store', {'name': 'Jane Doe', 'age': 28});
    });
    
  4. 查询数据

    var result = await db.get('my_store', key: 'John Doe');
    print(result); // 输出: {name: John Doe, age: 30}
    
  5. 更新数据

    await db.put('my_store', {'name': 'John Doe', 'age': 31}, key: 'John Doe');
    
  6. 删除数据

    await db.delete('my_store', whereKey: 'Jane Doe');
    
  7. 关闭数据库

    await db.close();
    

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

1 回复

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


app_sembast 是一个用于 Flutter 的本地数据库管理插件,它基于 sembast 库,提供了一个简单且高效的 NoSQL 数据库解决方案。sembast 是一个基于文件的 NoSQL 数据库,适用于 Flutter 和 Dart 应用程序,允许你以键值对的形式存储数据。

安装 app_sembast

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

dependencies:
  flutter:
    sdk: flutter
  app_sembast: ^1.0.0

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

使用 app_sembast

1. 初始化数据库

在使用 app_sembast 之前,你需要初始化数据库。通常,你可以在 main.dart 中进行初始化:

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

void main() async {
  WidgetsFlutterBinding.ensureInitialized();
  
  // 初始化数据库
  await AppSembast.init();
  
  runApp(MyApp());
}

2. 打开数据库

你可以使用 AppSembast.instance 来获取数据库实例,并打开数据库:

final database = await AppSembast.instance.database;

3. 存储数据

你可以使用 put 方法来存储数据:

import 'package:sembast/sembast.dart';

final store = intMapStoreFactory.store('my_store');

await store.record(1).put(database, {'name': 'John', 'age': 30});
await store.record(2).put(database, {'name': 'Jane', 'age': 25});

4. 获取数据

你可以使用 get 方法来获取数据:

final record = await store.record(1).get(database);
print(record); // {'name': 'John', 'age': 30}

5. 查询数据

你可以使用 find 方法来查询数据:

final finder = Finder(filter: Filter.greaterThan('age', 28));
final records = await store.find(database, finder: finder);

records.forEach((record) {
  print(record.value); // {'name': 'John', 'age': 30}
});

6. 更新数据

你可以使用 update 方法来更新数据:

await store.record(1).update(database, {'age': 31});

7. 删除数据

你可以使用 delete 方法来删除数据:

await store.record(1).delete(database);

8. 关闭数据库

在应用程序退出时,你可以关闭数据库:

await database.close();

完整示例

以下是一个完整的示例,展示了如何使用 app_sembast 进行基本的 CRUD 操作:

import 'package:app_sembast/app_sembast.dart';
import 'package:flutter/material.dart';
import 'package:sembast/sembast.dart';

void main() async {
  WidgetsFlutterBinding.ensureInitialized();
  
  // 初始化数据库
  await AppSembast.init();
  
  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(title: Text('App Sembast Example')),
        body: Center(
          child: Column(
            mainAxisAlignment: MainAxisAlignment.center,
            children: [
              ElevatedButton(
                onPressed: () async {
                  final database = await AppSembast.instance.database;
                  final store = intMapStoreFactory.store('my_store');
                  
                  // 存储数据
                  await store.record(1).put(database, {'name': 'John', 'age': 30});
                  await store.record(2).put(database, {'name': 'Jane', 'age': 25});
                  
                  // 获取数据
                  final record = await store.record(1).get(database);
                  print(record); // {'name': 'John', 'age': 30}
                  
                  // 查询数据
                  final finder = Finder(filter: Filter.greaterThan('age', 28));
                  final records = await store.find(database, finder: finder);
                  records.forEach((record) {
                    print(record.value); // {'name': 'John', 'age': 30}
                  });
                  
                  // 更新数据
                  await store.record(1).update(database, {'age': 31});
                  
                  // 删除数据
                  await store.record(1).delete(database);
                },
                child: Text('Run Example'),
              ),
            ],
          ),
        ),
      ),
    );
  }
}
回到顶部