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

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

app_sqflite 包含了简化 Flutter 应用开发的 sqflite 辅助工具。

支持

如果您喜欢我的工作并希望支持我,买杯咖啡对我来说将是极大的鼓励!感谢您的支持!

Buy Me A Coffee


Mark Ivan BastoGitHub @MarkIvanDev


完整示例

以下是一个完整的示例,展示了如何使用 app_sqflite 插件来管理本地数据库。

import 'package:app_sqflite/app_sqflite.dart';

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

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

详细步骤

  1. 引入依赖

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

    dependencies:
      flutter:
        sdk: flutter
      app_sqflite: ^x.x.x  # 替换为最新版本号
    
  2. 初始化数据库

    使用 getDatabaseFactory().openDatabase() 方法来打开数据库。在这个例子中,我们打开了一个名为 test.db 的数据库文件。

    final db = await getDatabaseFactory().openDatabase('test.db');
    
  3. 关闭数据库

    当应用退出或不再需要数据库时,确保调用 db.close() 来关闭数据库连接。

    await db.close();
    

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

1 回复

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


sqflite 是 Flutter 中一个非常流行的 SQLite 数据库管理插件,它提供了简单易用的 API 来管理本地 SQLite 数据库。以下是如何在 Flutter 项目中使用 sqflite 插件的详细步骤。

1. 添加依赖

首先,在 pubspec.yaml 文件中添加 sqflitepath 依赖:

dependencies:
  flutter:
    sdk: flutter
  sqflite: ^2.0.0+4
  path: ^1.8.0

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

2. 创建数据库

接下来,创建一个数据库并定义表结构。通常,我们会在应用启动时初始化数据库。

import 'package:sqflite/sqflite.dart';
import 'package:path/path.dart';

class DatabaseHelper {
  static final DatabaseHelper _instance = DatabaseHelper._internal();
  static Database? _database;

  factory DatabaseHelper() {
    return _instance;
  }

  DatabaseHelper._internal();

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

  Future<Database> _initDatabase() async {
    String path = join(await getDatabasesPath(), 'app_database.db');
    return await openDatabase(
      path,
      version: 1,
      onCreate: _onCreate,
    );
  }

  Future<void> _onCreate(Database db, int version) async {
    await db.execute('''
      CREATE TABLE users(
        id INTEGER PRIMARY KEY AUTOINCREMENT,
        name TEXT,
        age INTEGER
      )
    ''');
  }
}

3. 插入数据

使用 insert 方法向数据库中插入数据。

Future<void> insertUser(Map<String, dynamic> user) async {
  final db = await DatabaseHelper().database;
  await db.insert(
    'users',
    user,
    conflictAlgorithm: ConflictAlgorithm.replace,
  );
}

4. 查询数据

使用 query 方法从数据库中查询数据。

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

5. 更新数据

使用 update 方法更新数据库中的数据。

Future<void> updateUser(Map<String, dynamic> user) async {
  final db = await DatabaseHelper().database;
  await db.update(
    'users',
    user,
    where: 'id = ?',
    whereArgs: [user['id']],
  );
}

6. 删除数据

使用 delete 方法从数据库中删除数据。

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

7. 使用示例

以下是一个简单的示例,展示如何在 Flutter 应用中使用 sqflite 进行数据库操作。

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

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

class MyApp extends StatelessWidget {
  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      home: HomeScreen(),
    );
  }
}

class HomeScreen extends StatefulWidget {
  [@override](/user/override)
  _HomeScreenState createState() => _HomeScreenState();
}

class _HomeScreenState extends State<HomeScreen> {
  final DatabaseHelper _dbHelper = DatabaseHelper();

  [@override](/user/override)
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Sqflite Example'),
      ),
      body: Center(
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: [
            ElevatedButton(
              onPressed: () async {
                await _dbHelper.insertUser({'name': 'John', 'age': 30});
                print('User inserted');
              },
              child: Text('Insert User'),
            ),
            ElevatedButton(
              onPressed: () async {
                List<Map<String, dynamic>> users = await _dbHelper.getUsers();
                print('Users: $users');
              },
              child: Text('Get Users'),
            ),
            ElevatedButton(
              onPressed: () async {
                await _dbHelper.updateUser({'id': 1, 'name': 'John Doe', 'age': 31});
                print('User updated');
              },
              child: Text('Update User'),
            ),
            ElevatedButton(
              onPressed: () async {
                await _dbHelper.deleteUser(1);
                print('User deleted');
              },
              child: Text('Delete User'),
            ),
          ],
        ),
      ),
    );
  }
}
回到顶部