달력

11

« 2024/11 »

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
2019. 5. 14. 20:34

Flutter sqlite 연동하기 Android2019. 5. 14. 20:34

https://flutter.dev/docs/cookbook/persistence/sqlite 를 참조하여 작성

1. 모델생성

class ExampleVo { 
  final int id; 
  final String contents; 

  ExampleVo({this.id, this.contents}); 

  // key 부분은 database의 컬럼명이 들어가야 한다 
  Map<String, dynamic> toMap(){ 
    return { 
      'id':id, 
      'contents':contents 
    } 
  } 
} 



2. pubspec.yaml에 패키지 의존성 추가

// sqlite가 아니라 sqflite임에 주의 
dependencides: 
  flutter: 
    sdk: flutter 
  sqflite: any 
  path: any 


3. database 연결 및 테이블 생성

final Future database = openDatabase( 
  // join function을 이용하여 각 platform마다 올바르게 경로를 확인 
  path: join(await getDatabasePath(), 'example_database.db'), 
   
  // onCreate function을 실행하기 위한 version 설정 
  version: 1, 
   
  // create table 구문 실행 
  onCreate: (db, version) { 
    return db.execute( 
      "create table example(id integer, contets text)", 
    ); 
  }, 
); 



4. crud 구현

// create 
Future insertExample (ExampleVo e) async{ 
  final Database db = await database; 
  await db.rawInsert( 
    'insert into example (id, contents) values (?,?)', 
    [${e.id}, ${e.contents}] 
  ); 
  /* 
    await db.insert('example',e.toMap()); 
  */ 
} 
// retreive 
Future selectExample (ExampleVo e) async{ 
  final Database db = await database; 
  return List<Map<String,dynamic>> exampleList  
    = await db.rawQuery('select * from example'); 
  /*  
    return List<Map<String,dynamic>> exampleList  
      = await db.query('example', columns:[id,contents]); 
  */ 
   
  // 추출된 map은 read-only이기 때문에 수정이 필요할 경우 아래와 같이  
  /* 
    Map<String, dynamic> e = mapList.first; 
    return List.generate(mapList.length, (idx) => { 
                return ExampleVo( 
                  id = mapList[idx]['id']; 
                  contents = mapList[idx]['contents']; 
                ); 
              }); 
     
  */ 
} 
// update 
Future updateExample (ExampleVo e) async{ 
  final Database db = await database; 
  await db.rawUpdate( 
    'update example set contents=? where id=?', 
    [${e.contents},${e.id}]; 
  ); 
  /* 
    await db.update('example',e.toMap(), where: 'id=?', whereArgs: [e.id]); 
  */ 
} 
// delete 
Future deleteExample (ExampleVo e) async{ 
  final Database db = await database; 
  await db.rawDelete( 
    'delete from example where id = ?', 
    [${e.id}] 
  ); 
  /* 
    await db.delete('example',where: id=?', whereArgs: [e.id]); 
  */ 
} 

/* 

  final e1 = ExampleVo (id: 0, contents: 'example0'); 
  await insertExample(e1); 
   
  print(await selectExample()): 
   
  final e2 = ExampleVo (id: 0, contents: 'example1'); 
  await updateExample(e2); 
   
  print(await selectExample()): 
   
  await deleteExample(e2); 
   
  print(await selectExample()): 

*/

'Android' 카테고리의 다른 글

Flutter 페이지 이동(navigation)  (0) 2019.05.18
Flutter Future 설명  (0) 2019.04.22
Framework7 시작  (0) 2018.05.07
:
Posted by SK