[android] Android Studio에서 ADB를 사용하여 SQLite DB를 보는 방법

내 SQLite db를보아야하는데 어떻게해야하는지 모르겠습니다. 나는에 갔어요 http://www.sqlite.org/download.html 내 OS의 명령 행 쉘을 다운로드,하지만 난이 프로그램을 실행하고 입력 할 때 adb ...나는 오류를 얻을.

참고 : Android Studio를 사용하고 있으므로 추가로 설치할 필요가 없다고 가정합니다. Android Studio에 필요한 모든 SDK 도구가 있다고 말한 것이 기억납니다.



답변

가장 쉬운 방법 : ADB Shell을 통해 Sqlite3에 연결

Android Studio에서이를 수행하는 방법을 찾지 못했지만 매번 파일을 가져 오는 대신 원격 셸을 사용하여 db에 액세스합니다.

여기에서 모든 정보 찾기 :
http://developer.android.com/tools/help/sqlite3.html

1- 명령 프롬프트에서 플랫폼 도구 폴더로 이동하십시오.

2- 명령 adb devices을 입력 하여 장치 목록을 가져옵니다.

C:\Android\adt-bundle-windows-x86_64\sdk\platform-tools>adb devices
List of devices attached
emulator-xxxx   device

3- 장치에 셸을 연결합니다.

C:\Android\adt-bundle-windows-x86_64\sdk\platform-tools>adb -s emulator-xxxx shell

4a- 루팅 된 기기에서이 단계를 건너 뛸 수 있습니다.

run-as <your-package-name>

4b- db 파일이있는 폴더로 이동합니다.

cd data/data/<your-package-name>/databases/

5- sqlite3을 실행하여 db에 연결하십시오.

sqlite3 <your-db-name>.db

6- 원하는 sqlite3 명령 실행 :

Select * from table1 where ...;

참고 : 아래에서 실행할 더 많은 명령을 찾으십시오.

SQLite 치트 시트

SQLite 데이터베이스에서 테이블을 보는 몇 단계가 있습니다.

  1. 데이터베이스의 테이블을 나열하십시오.

    .tables
    
  2. 표가 어떻게 보이는지 나열하십시오.

    .schema tablename
    
  3. 전체 표를 인쇄합니다.

    SELECT * FROM tablename;
    
  4. 사용 가능한 모든 SQLite 프롬프트 명령을 나열합니다.

    .help
    


답변

나에게 가장 쉬운 방법은 Android Device Monitor를 사용하여 데이터베이스 파일을 가져오고 SQLite DataBase Browser를 사용하여 Android Studio를 사용하여 Android를 프로그래밍하는 동안 파일을 보는 것입니다.

1) Android Studio에서 Android 에뮬레이터로 데이터베이스 앱을 실행하고 실행합니다. (확인하기 위해 데이터베이스 앱에 일부 데이터를 삽입했습니다)

2) Android Device Monitor를 실행합니다. 달리는 방법?; 로 이동하십시오 [your_folder] > sdk >tools. 해당 폴더에서 monitor.bat를 볼 수 있습니다. shift + right click폴더 안에 ” Open command window here“를 선택 합니다. 이 작업은 명령 프롬프트를 시작합니다. 유형 monitor및 Android Device Monitor가 시작됩니다.

3) 현재 실행중인 에뮬레이터를 선택합니다. 그런 다음data>data>[your_app_name]>databases

4) 아이콘 (오른쪽 상단 모서리에 있음)을 클릭하고 (아이콘 위로 마우스를 가져 가면 “장치에서 파일 가져 오기”가 표시됨) 원하는 곳에 저장합니다.

5) SQLite 데이터베이스 브라우저를 시작합니다. 방금 저장 한 파일을 해당 브라우저에 끌어다 놓습니다.

6) Browse Data탭으로 이동 하여 보려는 테이블을 선택하십시오.

여기에 이미지 설명 입력
여기에 이미지 설명 입력


답변

현재 겪고있는 문제는 일반적이며 설명서에 잘 설명되어 있지 않습니다. 일반 장치에는 sqlite3 데이터베이스 바이너리가 포함되어 있지 않으므로 오류가 발생합니다. Android Emeulator, OSX, Linux (설치된 경우) 및 Windows (설치된 후)에는 바이너리가 있으므로 머신에서 로컬로 데이터베이스를 열 수 있습니다.

해결 방법은 장치에서 로컬 시스템으로 데이터베이스를 복사하는 것입니다. 이것은 ADB로 수행 할 수 있지만 여러 단계가 필요합니다.

시작하기 전에 몇 가지 정보가 필요합니다.

  • SDK의 경로 (OS 환경에 포함되지 않은 경우)
  • 귀하의 <package name>예를 들어,com.example.application
  • <local path>예를 들어 데이터베이스를 배치합니다. ~/Desktop또는%userprofile%\Desktop

다음으로 아래 예에서 각 명령이 첫 번째 문자에 기록되는 터미널을 이해해야합니다. 입력되지는 않지만 어떤 쉘에 있는지 알려줍니다.

  • > = OS 명령 프롬프트
  • $ = ADB 쉘 명령 프롬프트
  • ! = 관리자 명령 프롬프트로 ADB 쉘
  • %

그런 다음 터미널 또는 명령에서 다음 명령을 입력하십시오 (에 첫 문자 나 텍스트를 입력하지 마십시오 ()).

> adb shell
$ su
! cp /data/data/<package name>/Databases/<database name> /sdcard
! exit
$ exit
> adb pull /sdcard/<database name> <local path>
> sqlite3 <local db path>
% .dump
% .exit  (to exit sqldb)

이것은 데이터베이스를 로컬 머신에 복사하고 로컬에서 데이터베이스를 읽는 방법에 대한 진정한 라운드입니다. 에뮬레이터에서 기기에 sqlite3 바이너리를 설치하는 방법을 설명하는 SO 및 기타 리소스가 있지만 한 번만 액세스하면이 프로세스가 작동합니다.

대화식으로 데이터베이스에 액세스해야하는 경우 에뮬레이터 (이미 sqlite3가 있음)에서 앱을 실행하거나 sqlite를 장치 / xbin 경로에 설치 하는 것이 좋습니다 .


답변

  1. 터미널 열기
  2. cd <ANDROID_SDK_PATH>(Windows의 경우 cd C:\Users\Willi\AppData\Local\Android\sdk)
  3. cd platform-tools
  4. adb shell (하나의 에뮬레이터 만 실행중인 경우에만 작동합니다.)
  5. cd data/data
  6. su (슈퍼 유저 권한 획득)
  7. cd <PACKAGE_NAME>/databases
  8. sqlite3 <DB_NAME>
  9. SQL 문을 발행하십시오 ( 중요 :로 종료 ;하십시오. 그렇지 않으면 명령문이 발행되지 않고 대신 새 행으로 구분됩니다.)

참고 : 디렉토리 내용을 나열해야하는 경우 ls(Linux) 또는 dir(Windows)를 사용하십시오 .


답변

adb를 입력 할 때 언급되는 내용은 무엇입니까?

step1. >adb shell
step2. >cd data/data
step3. >ls -l|grep "your app package here"
step4. >cd "your app package here"
step5. >sqlite3 xx.db


답변

Stetho다음을 build.gradle파일 에 추가하여 라는 매우 멋진 도구를 사용할 수 있습니다 .

compile 'com.facebook.stetho:stetho:1.4.1'

Application또는 Activity onCreate()메서드 내에서 초기화했습니다 .

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    Stetho.initializeWithDefaults(this);
    setContentView(R.layout.activity_main);
}

그런 다음 주소 에서 크롬 의 db 레코드를 볼 수 있습니다 .

chrome://inspect/#devices

자세한 내용은 내 게시물을 읽을 수 있습니다. DB 레코드를 쉽게 보는 방법


답변

기기에 따라 adb 셸에서 sqlite3 명령을 찾지 못할 수 있습니다. 이 경우 다음을 따르십시오.

adb 쉘

$ run-as package.name
$ cd ./databases/
$ ls -l # 현재 권한 찾기-r = 4, w = 2, x = 1
$ chmod 666 ./dbname.db
$ exit
$ exit
adb pull / data /data/package.name/databases/dbname.db ~ / Desktop /
adb push ~ / Desktop / dbname.db /data/data/package.name/databases/dbname.db
adb shell
$ run-as package.name
$ chmod 660 ./databases/dbname.db # 원래 권한 복원
$ exit
$ exit

참고로 https://stackoverflow.com/a/17177091/3758972 로 이동 하십시오 .

위의 절차를 수행 한 후 “원격 개체를 찾을 수 없음”이 표시되는 경우가있을 수 있습니다. 그런 다음 adb 쉘에서 데이터베이스 폴더의 권한을 755로 변경하십시오.

$ chmod 755 데이터베이스 /

그러나 21 미만의 Android 버전에서만 작동합니다.