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 |