flutter如何使用sqlite数据库

在Flutter项目中如何使用SQLite数据库进行本地数据存储?需要导入哪些依赖包?如何创建数据库和表?能否提供一个简单的增删改查操作示例?另外,SQLite数据库文件通常存储在设备的什么位置?

2 回复

在Flutter中使用SQLite,需添加sqflitepath依赖。创建数据库、建表,通过CRUD操作增删改查数据。注意异步处理和数据库版本管理。

更多关于flutter如何使用sqlite数据库的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


在 Flutter 中使用 SQLite 数据库,主要通过 sqflite 插件实现。以下是详细步骤:

1. 添加依赖

pubspec.yaml 文件中添加依赖:

dependencies:
  sqflite: ^2.3.0
  path: ^1.8.3

运行 flutter pub get 安装依赖。

2. 创建数据库和表

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

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

  static Database? _database;

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

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

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

3. 增删改查操作

// 插入数据
Future<int> insertUser(Map<String, dynamic> user) async {
  Database db = await DatabaseHelper().database;
  return await db.insert('users', user);
}

// 查询数据
Future<List<Map<String, dynamic>>> getUsers() async {
  Database db = await DatabaseHelper().database;
  return await db.query('users');
}

// 更新数据
Future<int> updateUser(Map<String, dynamic> user) async {
  Database db = await DatabaseHelper().database;
  return await db.update(
    'users',
    user,
    where: 'id = ?',
    whereArgs: [user['id']],
  );
}

// 删除数据
Future<int> deleteUser(int id) async {
  Database db = await DatabaseHelper().database;
  return await db.delete(
    'users',
    where: 'id = ?',
    whereArgs: [id],
  );
}

4. 使用示例

// 插入用户
await insertUser({'name': 'John', 'email': 'john@example.com'});

// 查询所有用户
List<Map<String, dynamic>> users = await getUsers();
print(users);

// 更新用户
await updateUser({'id': 1, 'name': 'Jane', 'email': 'jane@example.com'});

// 删除用户
await deleteUser(1);

注意事项:

  1. 确保在 pubspec.yaml 中正确添加依赖
  2. 数据库操作是异步的,需要使用 await
  3. 在实际项目中建议使用模型类来管理数据
  4. 可以使用 moorfloor 等更高级的 ORM 库简化操作

这样就完成了 Flutter 中 SQLite 数据库的基本使用。记得在处理大量数据时要在后台线程执行操作。

回到顶部