Exemple de service

Pour créer un service qui gère la base de données SQLite avec une table Person, vous pouvez suivre les étapes suivantes :

  1. Créez une classe DatabaseService qui gère l'accès à la base de données SQLite et les opérations CRUD (Create, Read, Update, Delete) pour la table Person.

  2. Initialisez la base de données et la table Person lors de la première utilisation du service.

  3. Implémentez des méthodes pour ajouter, lire, mettre à jour et supprimer des enregistrements de la table Person.

Voici un exemple de service DatabaseService :

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

class DatabaseService {
  static Database? _database;
  static const String _tableName = 'persons';

  Future<void> _initDatabase() async {
    if (_database == null) {
      _database = await openDatabase(
        join(await getDatabasesPath(), 'persons_database.db'),
        onCreate: (db, version) {
          return db.execute(
            'CREATE TABLE $_tableName(id INTEGER PRIMARY KEY, name TEXT, age INTEGER)',
          );
        },
        version: 1,
      );
    }
  }

  Future<void> insertPerson(Person person) async {
    await _initDatabase();
    await _database!.insert(
      _tableName,
      person.toMap(),
      conflictAlgorithm: ConflictAlgorithm.replace,
    );
  }

  Future<List<Person>> getPersons() async {
    await _initDatabase();
    final List<Map<String, dynamic>> maps = await _database!.query(_tableName);
    return List.generate(maps.length, (i) {
      return Person(
        id: maps[i]['id'],
        name: maps[i]['name'],
        age: maps[i]['age'],
      );
    });
  }

  Future<void> updatePerson(Person person) async {
    await _initDatabase();
    await _database!.update(
      _tableName,
      person.toMap(),
      where: 'id = ?',
      whereArgs: [person.id],
    );
  }

  Future<void> deletePerson(int id) async {
    await _initDatabase();
    await _database!.delete(
      _tableName,
      where: 'id = ?',
      whereArgs: [id],
    );
  }
}

class Person {
  final int? id;
  final String name;
  final int age;

  Person({this.id, required this.name, required this.age});

  Map<String, dynamic> toMap() {
    return {
      'id': id,
      'name': name,
      'age': age,
    };
  }
}

Dans cet exemple, la classe DatabaseService gère l'accès à la base de données SQLite. Les méthodes insertPerson, getPersons, updatePerson et deletePerson permettent respectivement d'ajouter, de récupérer, de mettre à jour et de supprimer des enregistrements de la table persons. La classe Person représente un enregistrement de la table avec les propriétés id, name et age.

Dernière mise à jour