상식닷컴
로그인
가입하기
2026년 상식닷컴 선정 식당 & 카페 리스트
2025년 2026년 신상 호텔 리스트
최근에 오픈한 호텔을 찾는다면 살펴보세요
일주일 식단표 어플
자동 일주일 식단표 어플
안드로이드
아이폰
주식 & 코인 차트의 신
1000만원으로 2000만원 만들기 프로젝트
수정하기 - 플러터에서 데이터베이스를 사용하는 방법은 무엇인가요?
닉네임
비밀번호
제목
내용
[이미지 업로드는 권한이 있는 사람만 가능. 하단 카톡으로 연락]
플러터(Flutter)에서 데이터베이스를 사용하는 방법은 여러 가지가 있으며, 주로 SQLite, Firebase Firestore, Hive, Moor 등의 데이터베이스를 활용할 수 있습니다. 각 데이터베이스는 특정한 요구 사항과 사용 사례에 따라 선택할 수 있습니다. 아래에서는 각 데이터베이스의 특징과 사용 방법을 자세히 설명하겠습니다. 1. SQLite SQLite는 경량의 관계형 데이터베이스로, 플러터에서 가장 많이 사용되는 로컬 데이터베이스입니다. `sqflite` 패키지를 사용하여 SQLite 데이터베이스를 쉽게 사용할 수 있습니다. 설치 `pubspec.yaml` 파일에 `sqflite`와 `path_provider` 패키지를 추가합니다. ```yaml dependencies: sqflite: ^2.0.0 path_provider: ^2.0.0 ``` 데이터베이스 생성 및 사용 ```dart import 'package:sqflite/sqflite.dart'; import 'package:path/path.dart'; import 'package:path_provider/path_provider.dart'; import 'dart:io'; class DatabaseHelper { static final DatabaseHelper _instance = DatabaseHelper._internal(); factory DatabaseHelper() => _instance; static Database? _database; DatabaseHelper._internal(); F<a href='https://sangseek.com/sangseeks/uture/ko'>uture</a><Database> get database async { if (_database != null) return _database!; _database = <a href='https://sangseek.com/sangseeks/await/ko'>await</a> _initDatabase(); return _database!; } Future<Database> _initDatabase() async { Directory documentsDirectory = await getApplicationDocumentsDirectory(); String path = join(documentsDirectory.path, 'my_database.db'); return await openDatabase(path, version: 1, onCreate: _onCreate); } Future _onCreate(Database db, int version) async { await db.execute(''' CREATE TABLE items( id INTEGER PRIMARY KEY <a href='https://sangseek.com/sangseeks/AUTOINCREMENT/ko'>AUTOINCREMENT</a>, name TEXT ) '''); } Future<int> insertItem(String name) async { final db = await database; return await db.insert('items', {'name': name}); } Future<List<Map<String, dynamic>>> getItems() async { final db = await database; return await db.query('items'); } } ``` 2. Firebase Firestore Firebase Firestore는 클라우드 기반의 NoSQL 데이터베이스로, 실시간 데이터 동기화와 스케일링에 강점을 가지고 있습니다. 플러터에서 Firebase를 사용하기 위해서는 `cloud_firestore` 패키지를 사용합니다. 설치 `pubspec.yaml` 파일에 `cloud_firestore` 패키지를 추가합니다. ```yaml dependencies: cloud_firestore: ^3.0.0 firebase_core: ^1.0.0 ``` Firebase 초기화 및 사용 ```dart import 'package:cloud_firestore/cloud_firestore.dart'; import 'package:firebase_core/firebase_core.dart'; class FirestoreService { final FirebaseFirestore _db = FirebaseFirestore.instance; Future<void> addItem(String name) async { await _db.collection('items').add({'name': name}); } Stream<List<Item>> getItems() { return _db.collection('items').snapshots().map((snapshot) { return snapshot.docs.map((doc) { return Item.fromFirestore(doc.data()); }).toList(); }); } } class Item { final String name; Item({required this.name}); factory Item.fromFirestore(Map<String, dynamic> data) { return Item(name: data['name']); } } ``` 3. Hive Hive는 빠르고 경량의 NoSQL 데이터베이스로, Flutter 애플리케이션에서 로컬 데이터 저장을 위해 많이 사용됩니다. Hive는 JSON과 유사한 형식으로 데이터를 저장합니다. 설치 `pubspec.yaml` 파일에 `hive`와 `hive_flutter` 패키지를 추가합니다. ```yaml dependencies: hive: ^2.0.0 hive_flutter: ^1.0.0 ``` Hive 사용 ```dart import 'package:hive/hive.dart'; import 'package:hive_flutter/hive_flutter.dart'; class HiveService { Future<void> initHive() async { await Hive.initFlutter(); await Hive.openBox('myBox'); } Future<void> addItem(String name) async { var box = Hive.box('myBox'); await box.add(name); } List<String> getItems() { var box = Hive.box('myBox'); return box.values.cast<String>().toList(); } } ``` 4. Moor Moor는 Flutter에서 SQLite를 쉽게 사용할 수 있도록 도와주는 라이브러리입니다. 타입 안전성과 쿼리 빌더 기능을 제공하여 복잡한 쿼리를 쉽게 작성할 수 있습니다. 설치 `pubspec.yaml` 파일에 `moor`와 `moor_flutter` 패키지를 추가합니다. ```yaml dependencies: moor: ^4.0.0 moor_flutter: ^4.0.0 ``` Moor 사용 ```dart import 'package:moor/moor.dart'; import 'package:moor_flutter/moor_flutter.dart'; part 'database.g.dart'; @DataClassName('Item') class Items extends Table { IntColumn get id => integer().autoIncrement()(); TextColumn get name => text()(); } @UseMoor(tables: [Items]) class AppDatabase extends _$AppDatabase { AppDatabase() : super(Flutter<a href='https://sangseek.com/sangseeks/Query/ko'>Query</a>Executor.inDatabaseFolder(path: 'db.sqlite')); Future<List<Item>> getAllItems() => select(items).get(); Future insertItem(Insertable<Item> item) => into(items).insert(item); } ``` 결론 플러터에서 데이터베이스를 사용하는 방법은 다양하며, 각 데이터베이스는 특정한 요구 사항에 따라 선택할 수 있습니다. SQLite는 로컬 데이터 저장에 적합하고, Firebase Firestore는 클라우드 기반의 실시간 데이터 동기화에 유리합니다. Hive는 경량의 NoSQL 데이터베이스로 빠른 성능을 제공하며, Moor는 SQLite를 쉽게 사용할 수 있도록 도와주는 라이브러리입니다. 각 데이터베이스의 특성을 이해하고, 프로젝트의 요구 사항에 맞는 데이터베이스를 선택하여 사용하면 됩니다.
이용안내
커뮤니티 이용안내
×
- 게시한 게시글로 발생하는 문제는 게시자에게 책임이 있습니다.
- 게시글이 타인/타업체의 저작권을 침해할 경우 모든 책임은 게시자에게 있습니다. 게시자가 모든 손해를 부담해야 합니다.
- 상식닷컴 운영자는 게시자와 상의하지 않고 게시글을 수정 또는 삭제할 수 있습니다.
- 상식닷컴 운영자는 깨끗한 커뮤니티 공간을 만드는 것이 1순위입니다.
수정하기
취소하기