반응형
이번에는 PostgreSQL 기준으로 DB 연동 부분을 진행해보자.
( 원래는 MSSQL 부분을 진행하려고 했지만, MAC에서는 제한이 있기 때문에 우선 Dart 코드상으로 테스트를 위해서 포스트그레SQL로 진행해보겠다.. )
PostgreSQL 연동을 위해 postgres 패키지를 사용.
✔ 준비 사항
- PostgreSQL 설치 완료됨
- test_db 데이터베이스 생성
- users 테이블 생성:
CREATE TABLE users (
id SERIAL PRIMARY KEY,
name VARCHAR(50),
email VARCHAR(100)
);
✅ 1. postgres 패키지 설치
📌 pubspec.yaml에 다음 내용 추가:
dependencies:
postgres: ^2.6.3
📌 터미널에서 설치:
dart pub get
✅ 2. PostgreSQL 연결 코드 (SELECT 예제)
import 'package:postgres/postgres.dart';
void main() async {
final conn = PostgreSQLConnection(
"localhost", // 호스트
5432, // 포트
"test_db", // 데이터베이스 이름
username: "postgres", // 사용자 이름
password: "your_password", // 비밀번호
);
await conn.open();
print("✅ PostgreSQL 연결 성공!");
// SELECT
List<List<dynamic>> results = await conn.query('SELECT id, name, email FROM users');
for (final row in results) {
print("🧑 ID: ${row[0]}, 이름: ${row[1]}, 이메일: ${row[2]}");
}
await conn.close();
print("❌ 연결 종료");
}
✅ 3. CRUD 예시 코드
📌 INSERT
await conn.query(
'INSERT INTO users (name, email) VALUES (@name, @email)',
substitutionValues: {'name': '홍길동', 'email': 'hong@example.com'},
);
print("✅ 사용자 추가 완료!");
📌 UPDATE
await conn.query(
'UPDATE users SET email = @email WHERE name = @name',
substitutionValues: {'email': 'new@example.com', 'name': '홍길동'},
);
print("✅ 사용자 이메일 수정 완료!");
📌 DELETE
await conn.query(
'DELETE FROM users WHERE name = @name',
substitutionValues: {'name': '홍길동'},
);
print("✅ 사용자 삭제 완료!");
이번에는 Main에서 진행하지 말고 코드를 별도의 파일로 분리하여 진행하자.
매번 소스 파일별로 connection 부분이 있을 경우 효율적이지 않기 때문에 효율적인 코드를 위해서 코드를 분리하는 것이 좋다.
구조도 깔끔!
✅ 1. 구조 예시
📁 프로젝트 구조
lib/
├── db_connection.dart ← 연결 관리용 파일
main.dart ← 실제 실행 파일
✅ 2. db_connection.dart 생성
// lib/db_connection.dart
import 'package:postgres/postgres.dart';
class DBConnection {
static final PostgreSQLConnection _conn = PostgreSQLConnection(
"localhost",
5432,
"test_db",
username: "postgres",
password: "your_password",
);
static Future<PostgreSQLConnection> open() async {
if (_conn.isClosed) {
await _conn.open();
print("✅ PostgreSQL 연결됨");
}
return _conn;
}
static Future<void> close() async {
if (!_conn.isClosed) {
await _conn.close();
print("❌ PostgreSQL 연결 종료됨");
}
}
}
✅ 3. main.dart에서 사용하는 방법
// main.dart
import 'package:your_project/lib/db_connection.dart';
void main() async {
final conn = await DBConnection.open();
final results = await conn.query('SELECT name, email FROM users');
for (final row in results) {
print("이름: ${row[0]}, 이메일: ${row[1]}");
}
await DBConnection.close();
}
📌 your_project 부분은 pubspec.yaml 기준으로 맞게 경로 수정해야함. 샘플 이미지 참고
💡 장점
- 연결 로직을 여러 파일에서 공통으로 쓸 수 있음
- open() 과 close()를 통해 연결 제어도 깔끔하게 됨
이렇게 Dart에서 PostgreSQL 연동 및 데이터 CRUD에 대해서 알아보았다. 추가 적인 내용이 필요한 경우에는 댓글을 요청드리고, 틀린 부분이 있다면 이것 또한 댓글로 알려주시면 수정하도록 하겠습니다!
반응형
'IT > Dart' 카테고리의 다른 글
Dart_13일차 : Isolate (멀티스레드 프로그래밍) (2) | 2025.03.17 |
---|---|
Dart_12일차 : HTTP 요청 및 API 연동 (0) | 2025.03.12 |
Dart 번외 : IDE 선택하기 + 설치 (2) | 2025.03.11 |
Dart_11일차 : 파일 및 디렉터리 관리 (File & Directory Handling) (0) | 2025.03.10 |
Dart_10일차: 파일 입출력 (File I/O) & 스트림 (Stream) 활용 (0) | 2025.03.09 |