안드로이드 개발 에뮬레이터 앱 db 조회 하는 방법

안드로이드 개발

안드로이드 개발 에뮬레이터 앱 db 조회 하는 방법

 

환경: Android Studio

 

앱에서 만든 DB 테이블의 내용을 확인하려면 어떻게 해야 할까요? 예전처럼 안드로이드 스튜디오에서 제공하는 Android Device Monitor 로 확인할 수 없습니다. 패키지 안에 databases 폴더에 접근할 수가 없기 때문입니다. DB 테이블에 내용을 확인하기 위해서는 adb shell 을 이용해야 합니다. 오늘은 샘플 앱에서 저장한 데이터를 adb shell 로 조회하는 방법에 대해 알아 보겠습니다.

 

먼저 DB Helper 클래스를 이용해서 SQLite DB 를 만들고 테이블을 생성한 뒤 값을 넣어 보겠습니다. 그리고 테이블에 들어가 있는 값을 에뮬레이터로 조회할 것입니다. SQLiteOpenHelper 를 상속받아 사용자 정의 클래스를 만듭니다. 그리고 클래스의 onCreate() 함수에서 테이블 생성과 샘플 데이터를 입력합니다. DB 생성은 생성자 함수인 DBControl() 에서 하게 됩니다.

import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;

public class DBControl extends SQLiteOpenHelper {
    public static final String DB_NAME       = "work.db";
    public static final int       DB_VERSION = 1;


    public DBControl(Context context) {
        super(context, DB_NAME, null, DB_VERSION);
    }

    @Override
    public void onCreate(SQLiteDatabase db) {
        // 테이블 생성
        db.execSQL("CREATE TABLE USER( ID INTEGER PRIMARY KEY AUTOINCREMENT," + "NAME TEXT, AGE INTEGER);");

        // 테이블에 값 입력
        db.execSQL("INSERT INTO USER VALUES (null, 'ahkds@mail.com'    , 20 );");
        db.execSQL("INSERT INTO USER VALUES (null, 'kksujd@naver.com'  , 66 );");
        db.execSQL("INSERT INTO USER VALUES (null, 'ulid200@gmail.com' , 15 );");
        db.execSQL("INSERT INTO USER VALUES (null, 'text@naver.com'    , 31 );");
        db.execSQL("INSERT INTO USER VALUES (null, 'uusydfks@naver.com'    , 22 );");
        db.execSQL("INSERT INTO USER VALUES (null, 'qpodjs@gamil.com'  , 36 );");
    }

    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
        // TODO Auto-generated method stub
    }
}

 

위에서 만든 사용자 정의 클래스를 이용해서 DB 를 만들고 테이블에 데이터를 입력할 Activity 소스 입니다. SQLiteOpenHelper getWritableDatabase() 함수를 이용해서 읽기/쓰기 모드를 설정할 수 있습니다

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;

import display.samsung.workplace.common.DBControl;

public class DbActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_db);

        DBControl dbControl = new DBControl(this);
        //dbControl.getReadableDatabase(); // 읽기 전용
        dbControl.getWritableDatabase();  // 읽기/쓰기 전용
        dbControl.close();
    }
}

다음은 콘솔에서 DB 에 값이 들어가 있는지 확인해 보겠습니다. 콘솔을 실행하고 adb shell 을 입력합니다

안드로이드 개발 에뮬레이터 앱 db 조회 하는 방법

 

셀이 활성화 되면 cd 명령어를 이용해서 패키지가 있는 /data/data 폴더로 이동합니다

안드로이드 개발 에뮬레이터 앱 db 조회 하는 방법

 


자신이 만든 패키지 폴더로 진입하기 전에 cd 가 아닌 run-as 로 접근해야 합니다. 왜냐하면 cd 로 패키지 폴더로 접근할 수 없기 때문입니다. run-as 로 폴더가 활성화되면 databases 로 들어갑니다. sqlite3 databases 폴더에 work.db 파일를 읽습니다. work.db 는 앱에서 만든 DB 입니다

안드로이드 개발 에뮬레이터 앱 db 조회 하는 방법

 

테이블에 데이터가 들어가 있는지 확인하기 위해 select * from USER; 쿼리로 조회합니다. 그림처럼 Activity 에서 저장한 데이터를 확인할 수 있습니다

안드로이드 개발 에뮬레이터 앱 db 조회 하는 방법

Posted by 녹두장군