[flutter] 플러터 Container에서 데이터베이스와 연동하는 방법은 무엇인가요?

플러터 앱에서 데이터베이스와의 연동은 앱의 데이터를 영구적으로 저장하고 관리하기 위해 중요합니다. 플러터에서는 SQLite 데이터베이스를 가장 많이 사용하며, 이를 통해 데이터를 안정적으로 저장하고 관리할 수 있습니다.

SQLite 데이터베이스 설정

플러터 앱에서 SQLite 데이터베이스를 사용하려면 sqflite 패키지를 설치해야 합니다. pubspec.yaml 파일에 다음과 같이 패키지를 추가합니다:

dependencies:
  sqflite: any

이후 터미널에서 flutter pub get 명령어를 실행하여 패키지를 다운로드합니다.

데이터베이스 연결

다음으로 데이터베이스에 연결하고 테이블을 생성하는 코드를 작성해야 합니다. 아래는 데이터베이스 연결 및 테이블 생성하는 예제 코드입니다:

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

void main() async {
  var databasesPath = await getDatabasesPath();
  String path = join(databasesPath, 'my_database.db');
  Database database = await openDatabase(path, version: 1,
      onCreate: (Database db, int version) async {
    await db.execute(
        'CREATE TABLE Test (id INTEGER PRIMARY KEY, name TEXT, value INTEGER, other TEXT)');
  });

  // 나머지 작업 수행
}

데이터베이스 쿼리

데이터베이스에 데이터를 추가, 조회, 수정, 삭제하기 위해 다양한 쿼리 메서드를 사용할 수 있습니다. 예를 들어, 아래는 데이터 삽입 및 조회를 위한 예제 코드입니다:

// Insert some records in a transaction
await database.transaction((txn) async {
  int id1 = await txn.rawInsert(
      'INSERT INTO Test(name, value, other) VALUES("some name", 1234, "bar")');
  print('inserted1: $id1');
  int id2 = await txn.rawInsert(
      'INSERT INTO Test(name, value, other) VALUES(?, ?, ?)',
      ['another name', 12345678, 'foo']);
  print('inserted2: $id2');
});

// Get the records
List<Map> list = await database.rawQuery('SELECT * FROM Test');
List<Map> expectedList = [
  {'name': 'some name', 'id': 1, 'value': 1234, 'other': 'bar'},
  {'name': 'another name', 'id': 2, 'value': 12345678, 'other': 'foo'}
];
print(list);
assert(const DeepCollectionEquality().equals(list, expectedList));

결론

플러터 Container에서 SQLite 데이터베이스를 활용하여 데이터를 영구적으로 저장하고 관리하는 방법에 대해 알아보았습니다. SQLite 데이터베이스를 사용하여 데이터를 효율적으로 관리하고 필요한 작업을 수행할 수 있습니다.

위 예제를 참고하여 플러터 앱에서 데이터베이스를 효율적으로 활용할 수 있기를 바랍니다.

참고 자료