pubspec.yaml파일에 해당 코드를 추가한다.
sqflite: ^버전
path_provider: ^버전
dependencies:
sqflite: ^1.1.6
path_provider: ^1.2.0
커맨드 창에서
$ flutter pub get
명령어를 입력한다.
import 'package:sqflite/sqflite.dart';
import 'package:path/path.dart';
class AssetPortfolio {
String kind; //primary key
String asset;
String safety;
double percent;
int money;
AssetPortfolio({
this.kind,
this.asset,
this.safety,
this.percent,
this.money,
});
Map<String, dynamic> toMap() {
return <String, dynamic>{
'kind': kind,
'asset': asset,
'safety': safety,
'percent': percent,
'money': money,
};
}
}
final String mainTableName = 'assetportfolio';
class DBHelper {
var _db;
}
앞으로 생성되는 모든 메소드는 DBHelper Class 안에 생성해야 한다.
Future<Database> get database async {
if (_db != null) return _db;
_db = openDatabase(
join(await getDatabasesPath(), 'assetportfolio.db'),
onCreate: (db, version) => _createDb(db),
version: 1,
);
return _db;
}
static void _createDb(Database db) {
db.execute("CREATE TABLE assetportfolio(kind TEXT PRIMARY KEY, asset TEXT, safety TEXT, percent REAL, money INTEGER)");
}
Future<void> insertAssetPortfolio(AssetPortfolio assetPortfolio) async {
final db = await database;
await db.insert(
mainTableName, //테이블 명
assetPortfolio.toMap(),
conflictAlgorithm: ConflictAlgorithm.replace, //기본키 중복시 대체
);
}
Future<List<AssetPortfolio>> getAllAssetPortfolio() async {
final db = await database;
// 모든 AssetPortfolio를 얻기 위해 테이블에 질의합니다.
final List<Map<String, dynamic>> maps = await db.query('assetportfolio');
// List<Map<String, dynamic>를 List<AssetPortfolio>으로 변환합니다.
return List.generate(maps.length, (i) {
return AssetPortfolio(
kind: maps[i]['kind'],
asset: maps[i]['asset'],
safety: maps[i]['safety'],
percent: maps[i]['percent'],
money: maps[i]['money'],
);
});
}
Future<dynamic> getAssetPortfolio(String kind) async {
final db = await database;
final List<Map<String, dynamic>> maps = (await db
.query('assetportfolio', where: 'kind = ?', whereArgs: [kind]));
return maps.isNotEmpty ? maps.first['kind'] : null;
}
Future<void> updateAssetPortfolio(AssetPortfolio assetPortfolio) async {
final db = await database;
// 주어진 assetPortfolio를 수정합니다.
await db.update(
mainTableName,
assetPortfolio.toMap(),
// assetPortfolio의 kind가 일치하는 지 확인합니다.
where: "kind = ?",
whereArgs: [assetPortfolio.kind],
);
}
Future<void> deleteAssetPortfolio(String kind) async {
final db = await database;
// 데이터베이스에서 AssetPortfolio를 삭제합니다.
await db.delete(
mainTableName,
// 특정 AssetPortfolio를 제거하기 위해 `where` 절을 사용하세요
where: "kind = ?",
whereArgs: [kind],
);
}
위의 내용은 '재즐보프'님의 블로그를 참고하였습니다.
해당 링크: https://blog.naver.com/isc0304/221841891070