[flutter] 플러터(sqflite)를 사용한 데이터베이스 연결 및 설정

플러터 앱에서 데이터베이스를 사용하는 방법에 대해 알아보겠습니다. 데이터베이스 액세스에는 다양한 방법이 있지만, 여기서는 플러터 공식 지원 라이브러리인 sqflite를 사용하여 SQLite 데이터베이스에 연결하고 설정하는 방법에 초점을 맞출 것입니다.

1. sqflite 라이브러리 추가

우선, pubspec.yaml 파일에서 sqflite 라이브러리를 추가해야 합니다.

dependencies:
  flutter:
    sdk: flutter
  sqflite: ^2.0.0

이제 터미널에서 flutter pub get 명령어를 실행하여 변경 사항을 적용합니다.

2. 데이터베이스 클래스 생성

다음으로는 데이터베이스와 상호 작용할 수 있는 기능을 포함한 데이터베이스 클래스를 생성해야 합니다.

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

class DatabaseHelper {
  static final _databaseName = "myDatabase.db";
  static final _databaseVersion = 1;

  static final table = 'my_table';
  static final columnId = '_id';
  static final columnName = 'name';

  DatabaseHelper._privateConstructor();
  static final DatabaseHelper instance = DatabaseHelper._privateConstructor();

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

  _initDatabase() async {
    String path = join(await getDatabasesPath(), _databaseName);
    return await openDatabase(path, version: _databaseVersion, onCreate: _onCreate);
  }

  Future _onCreate(Database db, int version) async {
    await db.execute('''
      CREATE TABLE $table (
        $columnId INTEGER PRIMARY KEY,
        $columnName TEXT NOT NULL
      )
    ''');
  }

  Future<int> insert(Map<String, dynamic> row) async {
    Database? db = await instance.database;
    return await db!.insert(table, row);
  }

  // 다양한 데이터베이스 작업 메서드들을 추가할 수 있습니다.
}

위 코드에서는 DatabaseHelper 클래스 내에 테이블 및 열의 이름, 데이터베이스를 초기화하고 연결하는 메서드, 그리고 데이터를 삽입하는 메서드 등이 포함되어 있습니다.

3. 데이터베이스 연결

데이터베이스에 연결하여 실제로 데이터를 추가하거나 조회하는 방법은 다양합니다. 여기서는 가장 기본적인 형태로 데이터를 삽입하는 방법을 알아보겠습니다.

Map<String, dynamic> row = {
  DatabaseHelper.columnName: 'Bob',
};
final id = await DatabaseHelper.instance.insert(row);
print('inserted row id: $id');

위 코드는 ‘Bob’이라는 이름을 가진 데이터를 데이터베이스에 삽입하는 예시입니다.

플러터(sqflite)를 사용한 데이터베이스 연결 및 설정에 대한 간략한 소개였습니다. 데이터베이스를 사용하여 데이터를 영구적으로 저장하고 가져오는 방법을 익히면 플러터 앱의 성능과 유연성을 향상시킬 수 있습니다.

더 많은 정보를 원하시면 sqflite 공식 문서를 참고해보세요.