안드로이드 개발 앱에서 만든 DB 소스로 추출하는 방법 |
환경: Android Studio |
앱에서 만든 DB 의 내용을 컴퓨터에서 확인하고 싶거나 스마트폰에 별도로 저장해야 되는 경우 소스에서도 가능합니다. 저는 Android Device Monitor 의 File Explorer 에서 DB 를 추출하지 못할 때 사용했었습니다. 자주 사용할 일은 없겠지만 알아 두면 유용하게 써먹을 날이 있을 겁니다.
▼ 앱에서 만든 데이터베이스는 다음 폴더 주소에 있습니다. data > [앱 패키지명] > [databases] > [데이터베이스명] 으로 들어가서 폴더 안에 있는 addressbook.db 를 소스에서 다운받아 보겠습니다. 이것을 응용하면 안드로이드에서 관리하는 DB 도 다운로드가 가능합니다. 예를 들어 연락처 정보 같은 것들이죠. 하지만 스마트폰에 있는 연락처 정보는 접근할 수 없습니다.
▼ 먼저 앱에서 만든 DB 를 소스로 다운받기 위해서는 퍼미션이 필요합니다. 아래 두 가지 퍼미션을 AndroidManifest.xml 에 추가합니다.
<!-- DB 조회를 위한 퍼미션 --> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
DB 에 저장한 내용은 다음과 같습니다. 소스로 다운 받은 DB 에 저장한 내용이 있는지 확인해 보겠습니다. DB 저장 소스는 소개하지 않겠습니다. 오늘은 DB 파일을 저장하는 내용만 포스팅 하겠습니다.
▼ 소스는 다음과 같습니다. 버튼을 클릭하면 sqliteExport() 함수를 실행하게 됩니다. currentDBPath 에는 다운 받을 DB 주소를 넣고 backupDBPath 는 저장될 파일명을 입력합니다.
import android.app.Activity; import android.os.Bundle; import android.os.Environment; import android.view.View; import android.widget.Button; import android.widget.Toast; import com.example.gon.rstpclient.R; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.nio.channels.FileChannel; public class DBExportActivity extends Activity implements View.OnClickListener { private Button mBtn; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_dbexport); mBtn = (Button) findViewById(R.id.btnExport); mBtn.setOnClickListener(this); } public void onClick(View v) { switch (v.getId()) { case R.id.btnExport: sqliteExport(); break; default: break; } } public void sqliteExport(){ try { File sd = Environment.getExternalStorageDirectory(); File data = Environment.getDataDirectory(); if (sd.canWrite()) { String currentDBPath = "/data/com.example.gon.rstpclient/databases/addressbook.db"; String backupDBPath = "contacts.sqlite"; File currentDB = new File(data, currentDBPath); File backupDB = new File(sd, backupDBPath); if (currentDB.exists()) { FileChannel src = new FileInputStream(currentDB).getChannel(); FileChannel dst = new FileOutputStream(backupDB).getChannel(); dst.transferFrom(src, 0, src.size()); src.close(); dst.close(); } if(backupDB.exists()){ Toast.makeText(this, "DB Export Complete!!", Toast.LENGTH_SHORT).show(); } } } catch (Exception e) { e.printStackTrace(); } } }
▼ 함수를 실행하고 나면 그림과 같이 스마트폰의 저장소 제일 상단에 파일이 생성됩니다. 소스에 있던 이름과 같죠. 이것을 컴퓨터로 옮깁니다. SQLite 브라우저로 내용을 확인하기 위해서입니다.
▼ SQLite DB 파일을 확인하는 방법은 여러가지가 있지만 저 같은 경우 아래 주소에서 다운 받을 수 있는 SQLite Browser for SQLite 유틸을 이용하고 있습니다.
▼ [SQLite Browser for SQLite] 를 실행하고 [데이터베이스 열기] 메뉴를 눌러 소스에서 다운받은 “contacts.sqlite” 파일을 추가합니다. 그럼 위에서 보았던 DB 의 내용을 그대로 확인할 수 있습니다.
'안드로이드 개발' 카테고리의 다른 글
안드로이드(Android) 기본 알림창 AlertDialog 띄우는 방법 (0) | 2019.10.24 |
---|---|
안드로이드 개발 Fragment 화면 구성하는 방법 - FragmentActivity 로 화면 구성 (0) | 2019.10.10 |
로컬 레파지토리 sonatype nexus 설정해서 안드로이드 스튜디오 환경 구성하는 방법 (0) | 2019.10.09 |
안드로이드 개발 SurfaceView에 카메라 영상 띄우는 방법 (0) | 2019.09.18 |
Wowza GoCoder 안드로이드, 아이폰 클라이언트 개발을 위한 라이선스 키 받는 방법 (1) | 2019.09.15 |
안드로이드 개발 화면 전환 할 때 Activity 삭제와 생성 방지 orientation, screenSize 속성 사용하기 (0) | 2019.09.15 |
안드로이드 버전코드(versionCode), 버전이름(versionName) 차이와 조회하는 방법 (0) | 2019.09.14 |
안드로이드 개발 FragmentActivity 사용해서 화면 구성하는 방법 (0) | 2019.09.03 |