flutter_프로젝트/0_초보_코드모음
flutter 코드모음 : sqflite - SQL db생성
studyapps
2025. 5. 25. 21:48
무언가 입력받은 데이터를 로컬에 저장하고 출력하는 목표
pubspec.yaml에 아래 내용 추가
dev_dependencies:
flutter_test:
sdk: flutter
sqflite: ^2.4.2
path: ^1.8.0
참고 ) sqflite 설정시 굉장히 고생을 했다. SDK, NDK 재설치...온갖 설정 다시 정리... 뭔가 안되면..정상이다 -_-;;
main.dart파일 생성
일단 db만 생성, db가 생성되면 어디에 생성 되었는지 출력까지만 한다.
import 'package:flutter/material.dart';
import 'package:path/path.dart';
import 'package:sqflite/sqflite.dart';
void main() {
runApp(const MyApp());
}
class MyApp extends StatelessWidget {
const MyApp({super.key});
@override
Widget build(BuildContext context) {
return const MaterialApp(debugShowCheckedModeBanner: false, home: MyHome());
}
}
class MyHome extends StatefulWidget {
const MyHome({super.key});
@override
State<MyHome> createState() => _MyHomeState();
}
class _MyHomeState extends State<MyHome> {
@override
void initState() {
super.initState();
_init_db();
}
// 데이터 베이스 객체 생성
Database? _database;
Future<void> _init_db() async {
// 데이터 베이스 경로는 어디 인가?
String dbPath = await getDatabasesPath();
String path = join(dbPath, 'my_ex.db');
print(path);
// 데이터 베이스가 존재하지 않으면 생성
_database = await openDatabase(
path,
version: 1,
onCreate: (db, version) {
return db.execute(
'CREATE TABLE test (id INTEGER PRIMARY KEY, text TEXT)',
);
},
);
}
@override
Widget build(BuildContext context) {
return const Scaffold(body: Center(child: Text('Hello World')));
}
}
하루종일 걸렸지만....(설정때문에) 다행이 아래와 같이 db의 위치가 출력된다
I/flutter (26659): /data/user/0/com.example.todo250525/databases/my_ex.db
주의! 일반적인 웹 디버깅 모드 (나는 주로 크롬 or 엣지) 에서는 db가 설치되지 않기 때문에 실행이 되지 않는다!
가상디바이스나 휴대폰을 물리고 실행해야 할듯... (가상디바이스는 너무 느려서 실제 기기를 물렸다)