Flutter数据库管理插件sni_database的使用

Flutter数据库管理插件sni_database的使用

sni_database

sni_database 是一个用于 Flutter 的新插件项目。

开始使用

此项目是一个 Flutter 插件包的起点,插件包是一种专门包含 Android 和/或 iOS 平台特定实现代码的包。

获取帮助

如果您刚刚开始学习 Flutter,请查看我们的 在线文档,其中包含教程、示例、移动开发指南以及完整的 API 参考。

平台支持

此插件项目生成时未指定 --platforms 标志,因此目前不支持任何平台。要添加平台,请在相同目录下运行以下命令:

flutter create -t plugin --platforms <platforms> .

您还可以在 pubspec.yaml 文件中找到有关如何添加平台的详细说明,具体可参见 Flutter 官方文档


使用示例

以下是一个完整的示例代码,展示如何在 Flutter 中使用 sni_database 插件进行数据库管理。

1. 添加依赖

首先,在 pubspec.yaml 文件中添加 sni_database 作为依赖项:

dependencies:
  sni_database: ^1.0.0 # 假设版本为 1.0.0

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

2. 初始化数据库

创建一个简单的 Flutter 应用,并初始化数据库。

import 'package:flutter/material.dart';
import 'package:sni_database/sni_database.dart'; // 导入插件

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

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: DatabaseExample(),
    );
  }
}

3. 创建表和插入数据

接下来,我们将创建一个名为 users 的表,并向其中插入一些数据。

class DatabaseExample extends StatefulWidget {
  @override
  _DatabaseExampleState createState() => _DatabaseExampleState();
}

class _DatabaseExampleState extends State<DatabaseExample> {
  final DatabaseManager db = DatabaseManager(); // 初始化数据库管理器

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

  Future<void> initializeDatabase() async {
    await db.openDatabase('example.db'); // 打开数据库文件
    await db.execute('''
      CREATE TABLE IF NOT EXISTS users (
        id INTEGER PRIMARY KEY AUTOINCREMENT,
        name TEXT NOT NULL,
        age INTEGER
      )
    '''); // 创建表
    await db.insert('users', {'name': 'Alice', 'age': 25}); // 插入数据
    await db.insert('users', {'name': 'Bob', 'age': 30});
    print('Database initialized successfully!');
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('sni_database 示例'),
      ),
      body: Center(
        child: Text('数据库已初始化!'),
      ),
    );
  }
}

4. 查询数据

现在,我们可以从数据库中查询数据并显示结果。

Future<List<Map<String, dynamic>>> queryUsers() async {
  return await db.query('users');
}

@override
Widget build(BuildContext context) {
  return Scaffold(
    appBar: AppBar(
      title: Text('sni_database 示例'),
    ),
    body: FutureBuilder<List<Map<String, dynamic>>>(
      future: queryUsers(),
      builder: (context, snapshot) {
        if (snapshot.connectionState == ConnectionState.waiting) {
          return CircularProgressIndicator();
        } else if (snapshot.hasError) {
          return Text('Error: ${snapshot.error}');
        } else if (!snapshot.hasData || snapshot.data!.isEmpty) {
          return Text('No data available.');
        } else {
          final users = snapshot.data!;
          return ListView.builder(
            itemCount: users.length,
            itemBuilder: (context, index) {
              final user = users[index];
              return ListTile(
                title: Text(user['name']),
                subtitle: Text('${user['age']} 岁'),
              );
            },
          );
        }
      },
    ),
  );
}

5. 删除数据

我们还可以删除表中的某些记录。

Future<void> deleteUsers() async {
  await db.delete('users', where: 'id = ?', whereArgs: [1]);
  print('User deleted successfully!');
}

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

1 回复

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


SniDatabase 是一个用于 Flutter 的数据库管理插件,它提供了一种简单的方式来管理本地数据库。它基于 sqflite 插件,并提供了更高级的抽象和功能,使得数据库操作更加方便。

安装

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

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

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

基本用法

1. 初始化数据库

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

import 'package:sni_database/sni_database.dart';

void main() async {
  WidgetsFlutterBinding.ensureInitialized();
  
  // 初始化数据库
  await SniDatabase.initialize(
    databaseName: 'my_database.db',
    version: 1,
    onCreate: (db, version) async {
      // 创建表
      await db.execute('''
        CREATE TABLE users (
          id INTEGER PRIMARY KEY AUTOINCREMENT,
          name TEXT,
          age INTEGER
        )
      ''');
    },
    onUpgrade: (db, oldVersion, newVersion) async {
      // 数据库升级逻辑
    },
  );

  runApp(MyApp());
}

2. 使用数据库

你可以通过 SniDatabase.instance 来获取数据库实例,并进行增删改查操作。

import 'package:sni_database/sni_database.dart';

class UserRepository {
  Future<void> addUser(String name, int age) async {
    final db = SniDatabase.instance.database;
    await db.insert(
      'users',
      {'name': name, 'age': age},
      conflictAlgorithm: ConflictAlgorithm.replace,
    );
  }

  Future<List<Map<String, dynamic>>> getUsers() async {
    final db = SniDatabase.instance.database;
    return await db.query('users');
  }

  Future<void> updateUser(int id, String name, int age) async {
    final db = SniDatabase.instance.database;
    await db.update(
      'users',
      {'name': name, 'age': age},
      where: 'id = ?',
      whereArgs: [id],
    );
  }

  Future<void> deleteUser(int id) async {
    final db = SniDatabase.instance.database;
    await db.delete(
      'users',
      where: 'id = ?',
      whereArgs: [id],
    );
  }
}

3. 在应用中使用

你可以在应用中使用 UserRepository 来管理用户数据:

class MyApp extends StatelessWidget {
  final UserRepository _userRepository = UserRepository();

  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: Text('SniDatabase Example'),
        ),
        body: Center(
          child: Column(
            mainAxisAlignment: MainAxisAlignment.center,
            children: [
              ElevatedButton(
                onPressed: () async {
                  await _userRepository.addUser('John Doe', 30);
                  print('User added');
                },
                child: Text('Add User'),
              ),
              ElevatedButton(
                onPressed: () async {
                  final users = await _userRepository.getUsers();
                  print('Users: $users');
                },
                child: Text('Get Users'),
              ),
            ],
          ),
        ),
      ),
    );
  }
}
回到顶部