[flutter] 플러터에서 로컬 데이터베이스 사용하기

안녕하세요! 이번에는 플러터(Flutter)에서 로컬 데이터베이스를 사용하는 방법에 대해서 알아보겠습니다.

플러터에서 로컬 데이터베이스를 사용하려면 sqflite 패키지를 사용하면 됩니다. sqflite는 SQLite 데이터베이스와 상호작용하기 위한 플러터 플러그인입니다.

1. sqflite 패키지 추가하기

먼저, pubspec.yaml 파일을 열고 의존성(dependency)으로 sqflite 패키지를 추가해야 합니다. 아래와 같이 dependencies 블록 안에 sqflite 패키지를 추가합니다.

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

의존성을 추가한 후에는 터미널에서 flutter packages get 명령어를 입력하여 패키지를 다운로드 받아야 합니다.

2. 데이터베이스 생성

로컬 데이터베이스를 사용하기 위해서는 데이터베이스를 먼저 생성해야 합니다. sqflite 패키지를 사용하여 데이터베이스를 생성하는 예제 코드를 살펴보겠습니다.

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

void main() async {
  // 데이터베이스 경로 설정
  String path = join(await getDatabasesPath(), 'my_database.db');

  // 데이터베이스 생성
  Database database = await openDatabase(
    path,
    version: 1,
    onCreate: (db, version) {
      // 데이터베이스 테이블 생성
      db.execute(
        'CREATE TABLE my_table (id INTEGER PRIMARY KEY, name TEXT)',
      );
    },
  );

  // 데이터베이스 사용
  
  // 데이터베이스 닫기
  await database.close();
}

위 예제 코드에서 join 함수는 데이터베이스의 경로를 설정합니다. getDatabasesPath 함수를 사용하여 애플리케이션의 디렉토리에 데이터베이스 파일을 저장할 경로를 가져옵니다. 그리고 openDatabase 함수를 사용하여 데이터베이스를 생성합니다. onCreate 콜백에서는 테이블을 생성할 수 있습니다.

3. 데이터베이스 사용

데이터베이스를 생성한 후에는 database 객체를 사용하여 데이터를 추가, 조회, 수정, 삭제 등의 작업을 수행할 수 있습니다. 예를 들어, 데이터를 추가하는 예제 코드를 살펴보겠습니다.

// 데이터 삽입
await database.insert(
  'my_table',
  {'id': 1, 'name': 'John'},
);

위 예제 코드에서 insert 메서드는 my_table 테이블에 데이터를 삽입하는 역할을 합니다.

다른 CRUD(Create, Read, Update, Delete) 작업도 비슷한 방식으로 수행할 수 있습니다.

4. 데이터베이스 닫기

작업이 끝나면 데이터베이스를 닫아야 합니다. 데이터베이스를 닫지 않으면 리소스가 낭비될 수 있습니다. 아래와 같이 database.close() 메서드를 호출하여 데이터베이스를 닫습니다.

await database.close();

마무리

이번 포스팅에서는 플러터에서 로컬 데이터베이스를 사용하는 방법에 대해서 알아보았습니다. sqflite 패키지를 사용하면 플러터 애플리케이션에서 쉽게 로컬 데이터베이스를 다룰 수 있습니다. 데이터베이스를 사용하여 원하는 기능을 구현해보세요!

더 자세한 내용은 sqflite 패키지 문서를 참고해주세요.