Flutter sqflite 사용시 컬럼이 없을 경우 추가하기

sqlite에서

pragma table_info(테이블이름)

으로 쿼리를 날리면 컬럼정보가 아래와 같은 유형으로 나타납니다. 그렇기 때문에 맵 리스트로 저장 되었을 때 name을 기준으로 비교해서 존재여부를 판단하면 됩니다.

이미지1

이걸 flutter에서 sqflite를 사용할 때 alter table을 사용하기 위해서는 아래와 같은 사용예를 들 수 있습니다.

List<Map> res = await db.rawQuery("PRAGMA table_info(테이블네임)", null);
bool hasColumn = false;
for(int i = 0 ; i < res.length; i++) {
  if (res[i]["name"] == "컬럼네임") {
    hasColumn = true;
  }
}
if (!hasColumn) {
  await db.execute('''
    ALTER TABLE 테이블네임 ADD 컬럼네임 INTEGER DEFAULT 0 NOT NULL
  ''');
}
Share: Twitter Facebook
김민석's Picture

About 김민석

항상 공부가 부족한 개발자, 항상 시간이 부족한 딸바보, 항상 체력이 부족한 부족한남편, 그리고 고양이 집사

JungNangGu, Seoul, Korea Rep https://reddol18.pe.kr

Comments