Flutter中sqflite数据存储

67 阅读1分钟

1.添加依赖

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

2.创建数据库

在应用程序中创建数据库,并在数据库中创建表,your_database_name数据库的名字,your_table_name表名字

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

class DatabaseHelper {
  static Database? _database;

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

    // 如果数据库尚未初始化,则先初始化数据库
    _database = await initDatabase();
    return _database!;
  }

  static Future<Database> initDatabase() async {
    // 获取数据库路径
    String path = join(await getDatabasesPath(), 'your_database_name.db');

    // 打开数据库
    return await openDatabase(path, version: 1, onCreate: (db, version) async {
      // 在数据库中创建表
      await db.execute('''
        CREATE TABLE your_table_name (
          id INTEGER PRIMARY KEY,
          name TEXT,
          age INTEGER
        )
      ''');
    });
  }
}

3.执行数据库操作

class DatabaseHelper {
  
  //插入一条数据
  static Future<void> insertData(String name, int age) async {
    final Database db = await database;
    await db.insert(
      'your_table_name',
      {'name': name, 'age': age},
      conflictAlgorithm: ConflictAlgorithm.replace,
    );
  }

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

4.使用数据库操作

DatabaseHelper.insertData('John', 30);
DatabaseHelper.insertData('Alice', 25);

List<Map<String, dynamic>> data = await DatabaseHelper.getData();
data.forEach((row) {
  print('Name: ${row['name']}, Age: ${row['age']}');
});