마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

기존 DB에 미리채워진 데이터를 넣으려면 어떻게 해야할까요

0 추천

저희가 앱을 사용할때 사용자가 입력을하면 DB에 들어가기도 하지만 때로는 미리 DB에 저장되어 있는

데이터를 가져와서 화면에 뿌려주기도 하잖아요?

그걸 구현하려고 합니다.

사실 미리 기능이 구현되어있기는 합니다만 방식을 조금 바꾸려고 하기때문에 질문드립니다.

 

workout_database라는 이름의 DB에 

Workout, WokroutSetInfo 테이블이 존재합니다.

이 두가지 테이블은 1:N 형식으로 구현되어있고 입력을 통해 저장됩니다.

그리고 이제 말씀드릴 WorkoutList라고 운동종목 테이블을 추가로 만드려고합니다.

이것은 입력을 통한게 미리 DB에 저장되어있어서 사용자에게 운동목록을 보여줍니다.

--

방법은

Room 데이터베이스 미리 채우기  |  Android 개발자  |  Android Developers

개발자문서의 asset 부분의 방법을 참고해서 간단히 하려고하는데요 보시는 것처럼

Room.databaseBuilder(appContext, AppDatabase::class.java, "Sample.db")
    .createFromAsset("database/myapp.db")
    .build()

이러한 방식으로 사용을하는데..  

 

 

다른 샘플 영상을 보니 db bowser for sqlite 툴에서

person db를 만들고 거기에 person 테이블을 만들고

이 DB를 위 방법대로 저장을하던데

 

그렇다면 저 같은경우에는 WorkoutList 테이블을 만들기 위해서

 workout_database를 export? 내보내고? 툴에서 db를 불러온다음

테이블을 추가해서 위 방법대로 해야하는데

그렇다면 기존에 있던 workout, workoutsetinfo 테이블은 상관 없나요?

 

그러니까 제가 궁금한건.. 기존 앱을 실행하면 현재 workout_database가 만들어져있고

여기에 데이터를 입력하여 (테스트용이긴하지만) 데이터를 채워 놓은 상태입니다.

그런데 이 만들어져 있는 상태에서 추가로 미리 저장되어잇는 데이터가 필요하여

db browser for sqlite에서 테이블을 생성하여 createFromAsset을 하게된다면,

기존의 DB와 충돌 이라던지 그런건 없나요?

 

codeslave (3,940 포인트) 님이 2022년 11월 25일 질문
codeslave님이 2022년 11월 25일 수정

1개의 답변

0 추천
올리신 링크에 고려해야할 상황에 대해 설명을 해놨으니 꼼꼼히 살펴보시는 게 좋을 것 같습니다. 전체적으로는 앱의 버전코드에 따라 달라질 것으로 보이는데, 최초 버전이라면 문제가 없을 것 같고, 이후에 db스키마가 변경되거나 하면 그에 따른 마이그레션 처리가 있어야 할 것으로 보입니다.
spark (224,800 포인트) 님이 2022년 11월 25일 답변
...