상식닷컴
로그인
가입하기
2026년 상식닷컴 선정 식당 & 카페 리스트
2025년 2026년 신상 호텔 리스트
최근에 오픈한 호텔을 찾는다면 살펴보세요
일주일 식단표 어플
자동 일주일 식단표 어플
안드로이드
아이폰
주식 & 코인 차트의 신
1000만원으로 2000만원 만들기 프로젝트
궁금한 상식 보기
노르웨이 여행의 필수 관광 스폿은 무엇인가요?
혈전의 원인을 파악하기 위한 검사 방법은 무엇인가요?
혈전 치료를 위한 병원 선택에 있어서 고려해야 할 점은 무엇인가요?
텔레노벨라의 제작 과정은 어떻게 이루어지나요?
태국이나 일본에서도 텔레노벨라와 유사한 장르가 있나요?
강아지 목욕 후 보상으로 줄 간식은 어떤 것이 좋나요?
표시광고법이 적용되는 온라인 광고의 특징은 무엇인가요?
표시광고법에서 판단하는 '정당한 광고'란 무엇인가요?
산사나무의 잎이 주는 그늘의 효과는 어떤가요?
스마트폰을 오래 보면 눈 건강에 어떤 영향을 줄까?
ViewPager에서 페이지 전환 시 스타일 변경하기.
ViewPager의 스와이프 시 호출하는 핸들러 구현하기.
Previous
Next
수정하기 - 다트에서 데이터베이스와의 연동 방법은?
닉네임
비밀번호
제목
내용
[이미지 업로드는 권한이 있는 사람만 가능. 하단 카톡으로 연락]
다트(Dart)에서 데이터베이스와의 연동 방법은 여러 가지가 있으며, 주로 사용하는 데이터베이스의 종류에 따라 다릅니다. 여기서는 SQLite, Firebase Firestore, 그리고 REST API를 통한 데이터베이스 연동 방법에 대해 자세히 설명하겠습니다. 1. SQLite 연동 SQLite는 모바일 애플리케이션에서 많이 사용되는 경량 데이터베이스입니다. Dart에서는 `sqflite` 패키지를 사용하여 SQLite 데이터베이스와 연동할 수 있습니다. 설치 `pubspec.yaml` 파일에 `sqflite`와 `path_provider` 패키지를 추가합니다. ```yaml dependencies: sqflite: ^2.0.0+4 path_provider: ^2.0.2 ``` 데이터베이스 초기화 다음은 SQLite 데이터베이스를 초기화하고 테이블을 생성하는 예제입니다. ```dart import 'package:sqflite/sqflite.dart'; import 'package:path/path.dart'; import 'package:path_provider/path_provider.dart'; class DatabaseHelper { static final DatabaseHelper _instance = DatabaseHelper._internal(); static Database? _database; factory DatabaseHelper() { return _instance; } DatabaseHelper._internal(); Future<Database> get database async { if (_database != null) return _database!; _database = await _initDatabase(); return _database!; } Future<Database> _initDatabase() async { final directory = await getApplicationDocumentsDirectory(); final path = join(directory.path, 'my_database.db'); return await openDatabase(path, version: 1, onCreate: _onCreate); } Future _onCreate(Database db, int version) async { await db.execute(''' CREATE TABLE users ( id INTEGER PRIMARY KEY <a href='https://sangseek.com/sangseeks/AUTOINCREMENT/ko'>AUTOINCREMENT</a>, name TEXT, age INTEGER ) '''); } } ``` 데이터 삽입, 조회, 업데이트, 삭제 데이터베이스에 데이터를 삽입하고 조회하는 방법은 다음과 같습니다. ```dart class User { final int? id; final String name; final int age; User({this.id, required this.name, required this.age}); Map<String, dynamic> toMap() { return { 'id': id, 'name': name, 'age': age, }; } } class UserRepository { final DatabaseHelper _dbHelper = DatabaseHelper(); Future<void> insertUser(User user) async { final db = await _dbHelper.database; await db.insert('users', user.toMap()); } Future<List<User>> getUsers() async { final db = await _dbHelper.database; 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> updateUser(User user) async { final db = await _dbHelper.database; await db.update('users', user.toMap(), where: 'id = ?', whereArgs: [user.id]); } Future<void> deleteUser(int id) async { final db = await _dbHelper.database; await db.delete('users', where: 'id = ?', whereArgs: [id]); } } ``` 2. Firebase Firestore 연동 Firebase Firestore는 클라우드 기반의 NoSQL 데이터베이스로, 실시간 데이터 동기화가 가능합니다. Dart에서는 `cloud_firestore` 패키지를 사용하여 Firestore와 연동할 수 있습니다. 설치 `pubspec.yaml` 파일에 `cloud_firestore` 패키지를 추가합니다. ```yaml dependencies: cloud_firestore: ^3.1.5 firebase_core: ^1.10.6 ``` Firebase 초기화 Firebase를 사용하기 위해서는 먼저 Firebase 프로젝트를 생성하고, 앱을 등록한 후, Firebase SDK를 초기화해야 합니다. ```dart import 'package:firebase_core/firebase_core.dart'; void main() async { Widgets<a href='https://sangseek.com/sangseeks/Flutter/ko'>Flutter</a>Binding.ensureInitialized(); await Firebase.initializeApp(); runApp(MyApp()); } ``` 데이터 삽입, 조회, 업데이트, 삭제 Firestore에 데이터를 삽입하고 조회하는 방법은 다음과 같습니다. ```dart import 'package:cloud_firestore/cloud_firestore.dart'; class User { final String id; final String name; final int age; User({required this.id, required this.name, required this.age}); Map<String, dynamic> toMap() { return { 'name': name, 'age': age, }; } static User fromMap(String id, Map<String, dynamic> map) { return User( id: id, name: map['name'], age: map['age'], ); } } class UserRepository { final FirebaseFirestore _firestore = FirebaseFirestore.instance; Future<void> addUser(User user) async { await _firestore.collection('users').add(user.toMap()); } Future<List<User>> getUsers() async { final snapshot = await _firestore.collection('users').get(); return snapshot.docs.map((doc) => User.fromMap(doc.id, doc.data()!)).toList(); } Future<void> updateUser(User user) async { await _firestore.collection('users').doc(user.id).update(user.toMap()); } Future<void> deleteUser(String id) async { await _firestore.collection('users').doc(id).delete(); } } ``` 3. REST API 연동 REST API를 통해 데이터베이스와 연동하는 방법도 있습니다. Dart에서는 `http` 패키지를 사용하여 REST API와 통신할 수 있습니다. 설치 `pubspec.yaml` 파일에 `http` 패키지를 추가합니다. ```yaml dependencies: http: ^0.13.3 ``` API 호출 다음은 REST API를 호출하여 데이터를 가져오는 예제입니다. ```dart import 'dart:convert'; import 'package:http/http.dart' as http; class User { final int id; final String name; final int age; User({required this.id, required this.name, required this.age}); Map<String, dynamic> toMap() { return { 'name': name, 'age': age, }; } static User fromMap(Map<String, dynamic> map) { return User( id: map['id'], name: map['name'], age: map['age'], ); } } class UserRepository { final String baseUrl = 'https://example.com/api/users'; Future<List<User>> fetchUsers() async { final response = await http.get(Uri.parse(baseUrl)); if (response.statusCode == 200) { final List<dynamic> data = json.decode(response.body); return data.map((user) => User.fromMap(user)).toList(); } else { <a href='https://sangseek.com/sangseeks/throw/ko'>throw</a> Exception('Failed to load users'); } } Future<void> createUser(User user) async { final response = await http.post( Uri.parse(baseUrl), headers: {'Content-Type': 'application/json'}, body: json.encode(user.toMap()), ); if (response.statusCode != 201) { throw Exception('Failed to create user'); } } Future<void> updateUser(User user) async { final response = await http.put( Uri.parse('$baseUrl/${user.id}'), headers: {'Content-Type': 'application/json'}, body: json.encode(user.toMap()), ); if (response.statusCode != 200) { throw Exception('Failed to update user'); } } Future<void> deleteUser(int id) async { final response = await http.delete(Uri.parse('$baseUrl/$id')); if (response.statusCode != 204) { throw Exception('Failed to delete user'); } } } ``` 결론 Dart에서 데이터베이스와 연동하는 방법은 다양하며, 사용자의 요구사항에 따라 적절한 방법을 선택할 수 있습니다. SQLite는 로컬 데이터베이스에 적합하고, Firebase Firestore는 클라우드 기반의 실시간 데이터 동기화에 유리하며, REST API는 다양한 외부 서비스와의 통신에 유용합니다. 각 방법에 대한 이해를 바탕으로 프로젝트에 맞는 데이터베이스 연동 방식을 선택하시기 바랍니다.
이용안내
커뮤니티 이용안내
×
- 게시한 게시글로 발생하는 문제는 게시자에게 책임이 있습니다.
- 게시글이 타인/타업체의 저작권을 침해할 경우 모든 책임은 게시자에게 있습니다. 게시자가 모든 손해를 부담해야 합니다.
- 상식닷컴 운영자는 게시자와 상의하지 않고 게시글을 수정 또는 삭제할 수 있습니다.
- 상식닷컴 운영자는 깨끗한 커뮤니티 공간을 만드는 것이 1순위입니다.
수정하기
취소하기