앱 생성 중에 매번 앱 실행시에 db파일을 읽어와야 할 필요가 없고
초기 설치시에만 필요할 경우 먼저 DB를 생성 해 놓고 해당 DB를 앱에 설치할 수 있는
방법이 있어 해당 방법을 사용해 본다.
우선, SQLite DB Browser를 설치하여 새 DB를 만들어 줘야 한다.
설치는 아래 사이트에서 다운 받아 설치가 가능하다.
SQLite 사이트
https://sqlitebrowser.org/dl/
설치 이후 아래와 같이 DB Browser를 띄워 새 데이터베이스 버튼을 클릭하여 새데이터베이스 이름을
지정해 준뒤, 새 DB가 생성되면 초기데이터를 만들어줄 테이블을 생성해 주어야 된다.
DB가 만들어진 후 활성화 되는 [테이블생성하기] 버튼을 클릭하여
필드명과 타입, 각각 칼럼의 속성을 지정해 준뒤 데이터보기로 가면 해당 테이블의 값을 넣을 수 있다.
다 만들어진 이후 저장하기 메뉴로 해당 DB데이터를 저장해 준다. 저장해 둔 폴더를 기억해 두자.
이제 DB파일을 android studio에서 삽입 후 앱 동작시에 해당 파일이 앱DB로 복사되어 사용 가능하도록
만들어 주면 된다.
Android Studio에서 아래와 같이 assets 폴더를 만들어 주고 방금만든 DB파일을 해당 폴더에 복사해서 넣어준다.
이제 DB파일을 넣어주었으니, 해당 파일을 앱 동작시에 앱의 DB쪽으로 복사해주면 된다.
해당 복사하는 코드는 아래와 같이 사용하면 된다.
static public void copyDatabase(Context context) {
String DB_PATH = "/data/data/" + context.getPackageName() + "/databases/";
try {
// 디렉토리가 없으면, 디렉토리를 먼저 생성한다.
File fDir = new File(DB_PATH);
if (!fDir.exists()) {
fDir.mkdir();
}
String strOutFile = DB_PATH + dbNm;
InputStream inputStream = context.getAssets().open(dbNm);
OutputStream outputStream = new FileOutputStream(strOutFile);
byte[] mBuffer = new byte[1024];
int mLength;
while ((mLength = inputStream.read(mBuffer)) > 0) {
outputStream.write(mBuffer, 0, mLength);
}
outputStream.flush();
outputStream.close();
inputStream.close();
} catch (Exception e) {
e.printStackTrace();
}
}
해당 코드는 앱 동작시에 사용하는 Activity 에서 사용한 것이 아니고 별도의 아답터를 만들어 해당 Method를 호출한
것이므로, 사용하는 위치에 맞게 수정하여 사용하면 될 것같다.
코드상 [dbNm]은 해당 DB명칭이고 파일명칭과 같게 만들면 된다.
inputStream에 이미 만들어 놓은 파일을 담고 해당 파일을 Buffer단위로 쪼개서 OutputStream에 설정한 경로에
파일을 만들어 옮겨 담는 것이다.
해당 코드로 완료 후 Device File Explorer로 확인 결과 잘 복사되어 들어가는 것을 확인 하였다.
'Programing > android' 카테고리의 다른 글
[android studio] MPAndroidChart 차트 구현하기 (0) | 2021.10.22 |
---|---|
[android studio] component 찾는 방법, id만으로 찾기 (0) | 2021.10.21 |
[android studio] 일출 일몰 가져오기 (0) | 2021.10.17 |
[android studio] 일자를 이용하여 요일 구하기 (0) | 2021.10.15 |
[android studio] Spinner 사용하기 combobox처럼 여러아이템 중 하나 선택하기 (0) | 2021.10.12 |
댓글