플러터는 모바일 애플리케이션을 개발하기 위한 프레임워크로, 데이터베이스 연결도 중요한 부분입니다. 이번 글에서는 플러터에서 SQLite 데이터베이스에 연결하는 방법에 대해 알아보겠습니다.
1. sqflite 패키지 추가하기
플러터에서 SQLite 데이터베이스에 연결하기 위해서는 sqflite
패키지를 사용해야 합니다. pubspec.yaml
파일에 다음과 같이 sqflite
패키지를 추가해주세요.
dependencies:
sqflite: ^2.0.0+3
이후 터미널에서 flutter pub get
명령어를 실행하면 패키지가 설치됩니다.
2. 데이터베이스 연결 코드 작성하기
SQLite 데이터베이스에 연결하기 위해서는 아래와 같이 DatabaseHelper
클래스를 작성해야 합니다.
import 'package:sqflite/sqflite.dart';
import 'package:path_provider/path_provider.dart';
import 'package:path/path.dart';
class DatabaseHelper {
static final _databaseName = "my_database.db";
static final _databaseVersion = 1;
static Database? _database;
static final DatabaseHelper instance = DatabaseHelper._();
DatabaseHelper._();
Future<Database> get database async {
if (_database != null) return _database!;
// 앱 내부의 디렉터리 경로를 가져옴
var directory = await getApplicationDocumentsDirectory();
// 데이터베이스 파일 경로 생성
var path = join(directory.path, _databaseName);
// 데이터베이스 열기
_database = await openDatabase(path, version: _databaseVersion, onCreate: _createDatabase);
return _database!;
}
Future<void> _createDatabase(Database db, int version) async {
// 테이블 생성 쿼리 실행
await db.execute('''
CREATE TABLE my_table (
id INTEGER PRIMARY KEY,
name TEXT
)
''');
}
}
위 코드에서 DatabaseHelper
클래스는 데이터베이스 연결과 관련된 로직을 포함하고 있습니다. database
메소드를 통해 데이터베이스에 접근할 수 있습니다.
앱이 처음 실행될 때 데이터베이스를 생성하는 코드는 _createDatabase
메소드에 작성하면 됩니다. 위 코드에서는 my_table
테이블을 생성하는 예제가 포함되어 있습니다.
3. 데이터베이스 사용 예제
데이터베이스에 접속하여 데이터를 읽고 쓰는 예제를 살펴보겠습니다.
void main() async {
// 데이터베이스 초기화
await DatabaseHelper.instance.database;
// 데이터 쓰기
await DatabaseHelper.instance.database.then((db) {
db.insert('my_table', {'id': 1, 'name': 'John'});
});
// 데이터 읽기
await DatabaseHelper.instance.database.then((db) async {
var result = await db.query('my_table');
result.forEach((row) {
print(row['name']);
});
});
}
위 예제에서는 main
함수에서 데이터베이스를 초기화하고, 데이터를 쓰고 읽습니다. my_table
테이블에 ‘John’이라는 이름을 가진 데이터를 삽입하고, 모든 데이터를 읽어와 출력합니다.
이제 플러터에서 SQLite 데이터베이스에 연결하는 방법을 알게 되었습니다. 데이터베이스 연결 설정이 완료되면 데이터를 쉽게 저장하고 검색할 수 있으므로, 개발을 진행하면서 활용해보시기 바랍니다.