[flutter] 플러터에서의 데이터베이스 연동 방법

플러터(Flutter)는 구글에서 개발한 모바일 애플리케이션 개발 프레임워크로, 데이터베이스 연동은 애플리케이션 개발 시 중요한 부분입니다. 이번 포스트에서는 플러터에서 어떻게 데이터베이스를 연동할 수 있는지에 대해 알아보겠습니다.

1. sqflite 패키지 설치

플러터에서 데이터베이스 연동을 위해 가장 일반적으로 사용되는 패키지는 sqflite입니다. sqflite는 SQLite 데이터베이스를 플러터 애플리케이션에서 사용할 수 있도록 도와주는 패키지입니다.

프로젝트의 pubspec.yaml 파일에 아래의 의존성을 추가하여 sqflite 패키지를 설치합니다.

dependencies:
  sqflite: ^1.5.0

의존성을 추가한 후, 터미널에서 flutter packages get 명령어를 실행하여 패키지를 내려받습니다.

2. 데이터베이스 생성 및 연결

플러터에서 데이터베이스를 사용하기 위해 먼저 데이터베이스를 생성하고 연결해야 합니다. 다음은 데이터베이스 생성 및 연결하는 코드입니다.

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

Future<Database> openDatabase() async {
  final Future<Database> database = openDatabase(
    join(await getDatabasesPath(), 'example_database.db'),
    onCreate: (db, version) {
      return db.execute(
        "CREATE TABLE users(id INTEGER PRIMARY KEY, name TEXT, age INTEGER)",
      );
    },
    version: 1,
  );
  return database;
}

위의 코드에서는 openDatabase함수를 정의하여 데이터베이스를 생성하고 연결합니다. openDatabase함수는 데이터베이스 경로와 버전, 생성 시 실행할 SQL문을 인자로 받습니다.

3. 데이터베이스 쿼리

데이터베이스에 저장된 데이터를 조회, 추가, 수정, 삭제하기 위해서는 쿼리문을 사용해야 합니다. 다음은 예시로 사용될 User 클래스와 쿼리문을 실행하는 함수 예제입니다.

class User {
  final int id;
  final String name;
  final int age;

  User({this.id, this.name, this.age});
}

Future<List<User>> getUsers() async {
  final Database db = await openDatabase();
  final List<Map<String, dynamic>> maps = await db.query('users');

  return List.generate(maps.length, (i) {
    return User(
      id: maps[i]['id'],
      name: maps[i]['name'],
      age: maps[i]['age'],
    );
  });
}

Future<void> insertUser(User user) async {
  final Database db = await openDatabase();
  await db.insert(
    'users',
    user.toMap(),
    conflictAlgorithm: ConflictAlgorithm.replace,
  );
}

위의 코드에서는 User 클래스를 정의하고, getUsers() 함수는 데이터베이스에서 모든 사용자를 조회하여 리스트로 반환합니다. insertUser() 함수는 새로운 사용자를 데이터베이스에 추가하는 역할을 합니다.

결론

이상으로, 플러터에서 데이터베이스를 연동하는 방법에 대해 알아보았습니다. sqflite 패키지를 사용하여 데이터베이스를 생성, 연결하고 쿼리를 실행하는 방법을 배웠습니다. 데이터베이스를 활용하여 플러터 애플리케이션의 데이터를 영구저장할 수 있으며, 본인의 애플리케이션에 맞춰 데이터베이스를 설계하고 활용할 수 있습니다.

더 많은 정보를 알고 싶으면 sqflite 패키지의 공식 문서를 참고하시기 바랍니다.