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가 설치되지 않기 때문에 실행이 되지 않는다!

가상디바이스나 휴대폰을 물리고 실행해야 할듯... (가상디바이스는 너무 느려서 실제 기기를 물렸다)