자유롭게 질의 및 응답을 할 수 있는 게시판입니다. 개발자 여러분의 답변이 큰 도움이 됩니다.
- 제품설치/등록 오류 문의: 설치/등록 Q&A 이용 (제품 구매 고객 한정)
Firemonkey 안드로이드 스마트폰에서 sqlite DB 보는 방법은?
2016.10.31 16:55
본 게시판 사용시 당부 사항
* 이 게시판은 자유롭게 질문을 올리고 자발적으로 답변을 공유하는 게시판입니다.
* 어느 누구도 답변을 달아야만 하는 책임은 없습니다.
* 따라서 질문을 올리실 때에는 최대한 자세하고 정중하게 질문을 올려 주세요.
* 최대한 질문을 자세히 올려야 답변도 자세히 올라 옵니다.
* 본 질문에 답변을 주시는 여러 개발자님들께 미리 감사드립니다.
-----------------------------------------------------------------------------------------------
안드로이드폰에 sqlite를 설치해서 삽입 삭제 조회를 하고 있습니다.
그런데 이 데이타를 쉽게 볼수 있는 팁이 있으면 좋겠는데요.
delphi xe10.1에 이런 기능이 있을까요?
댓글 14
-
험프리
2016.11.01 13:24
-
화이부동
2016.11.02 17:15
답변감사드립니다.
제가 원하는 것은 PC에서 안드로이드에 쌓인 데이타를 보고 싶다는 의미입니다.
그리고 이 데이타를 PC로 갖어올려면 어떻게 해야하는지요?
mysql의 dbeaver나 sql explorer와 같은 것은 없나요?
-
얄리
2016.11.02 17:49
불가능하죠..
안드로이드 디바이스에 설치된 SQLite는 원격에서 접속할 수있는 DB가 아니고 stand alone으로 구동되는 임베디드용 로컬 DB입니다.
따라서 외부에서 디바이스 내에 있는 SQLite에 접속할 수 없습니다.
저 같은 경우는 안드로이드 폰을 PC에 USB로 외장 하드처럼 연결해놓고 SQLite Browser에서 해당 DB 파일 연결해서 쿼리합니다.
-
화이부동
2016.11.03 11:50
얄리님 번번히 고맙습니다. 서울 사시는가요?
모바일스니핏의 FireDac_SQLite 샘플을 보고 있습니다.
이 걸 보는 목적은 Sqlite의 db 정보가 어느 경로에 있는가를 알기 위해서입니다.
이 경로를 알려주는 샘플 경로는 아래와 같은데요.
procedure TFireDAC_SQLiteForm.TaskListBeforeConnect(Sender: TObject);
var
s : string;
begin
{$IF DEFINED(IOS) or DEFINED(ANDROID)}
s := TPath.GetDocumentsPath + PathDelim + 'tasks.s3db';
FireTaskList.Params.Values['Database'] := s;
{$ELSE}
FireTaskList.Params.Values['Database'] := 'tasks.s3db';
{$ENDIF}
end;
디버거로 s값을 보면 "'/data/data/com.embarcadero.FireDAC_SQLite/files/tasks.s3db'"로 나타납니다.
따라서 이 경로를 PC 탐색기로 보면 아래와 같이 나타납니다.(첨부파일 참조)
도대체 저 경로를 어디서 찾아야 할까요.
그리고 탐색기로 저 sqlite 파일명인 "tasks.s3db" 검색해도 나타나질 않습니다.
-
얄리
2016.11.03 14:50
아핫. 그렇군요.
저는 안드로이드 스튜디오에서 File Explorer 선택하고 data/data/[어플리케이션 패키지]/databases/*.db 찾아서 로컬에 복사해놓고 쿼리 한적이 있어서요.
그냥 탐색기에서는 안되는 거였군요.
-
푸른솔
2016.11.03 13:17
그 영역은 안드로이드의 '샌드박스'라는 영역입니다.
즉, 안드로이드가 직접 관리하는 보안이 철저한(?)한 영역입니다. 그러므로 PC에서 탐색기로는 절대로 열어 볼 수가 없습니다.
저도 처음엔 그 영역에 DB를 생성하고 탐색기로 열어 볼려고 무지 노력했습니다만 불가능하다는 것을 알았습니다.
지금은 테더링을 통해서 안드로이드와 PC의 데이타를 서로 주고 받고 있습니다.
그 영역의 데이타를 가져 오려면 테더링이나 인디를 사용해서 소켓서버/ftp를 만들어야 하는데 테더링이 편합니다.
예제도 있고요...
테더링도 결국은 인디로 구현되어 있는 p2p형식입니다...
-
화이부동
2016.11.03 14:21
답변 감사드립니다. 몰랐던 내용이네요.
괜히 삽질만 하고 있었습니다.
그럼 별도의 폴더를 만들어서 그곳에다 sqlite db를 저장하면 안될까요.
예를 들자면 sdcard/imsi/ 폴더를 생성하고 여기에다가 sqlite.db를 만들어서 삽입 삭제를 하면 어떤가요?
-
화이부동
2016.11.07 21:02
sqlite db를 가져오는 테터링 샘플을 공유해주실 수 있습니까?
공유해주시면 무척 고마워할겁니다..^^
-
푸른솔
2016.11.03 14:47
SD카드에 저장하면 될 겁니다...
보안이 중요하지 않다면....
-
화이부동
2016.11.07 14:58
이런 경우는 FDPhysSQLiteDriverLink1에 VendorHome과 VendorLib를 어떻게 설정해야 하나요.
Sqlite를 실행하면 에라가 나네요.
스마트폰 OS는 안드로이드입니다.
아래 그리은 Sqlite를 열려고 하는 중입니다.
Vendorhome 경로입니다.
-
험프리
2016.11.07 16:33
VendorHome, VendorLib는 벤더사(SQLite) 라이브러리의 경로를 설정하는 옵션입니다.
아래 부분을 수정해야 합니다.
{$IF DEFINED(IOS) or DEFINED(ANDROID)}
s := TPath.GetDocumentsPath + PathDelim + 'tasks.s3db';
FireTaskList.Params.Values['Database'] := s;
{$ELSE}
FireTaskList.Params.Values['Database'] := 'tasks.s3db';
{$ENDIF}
Androidapi.IOUtils.pas 의
GetExternalFileDir 등의 함수를 참고하세요.
// File Locations in External memory. (Accessible only to the program, but easily
// readable mounting the external storage as a drive in a computer.
// Files written here are deleted when uninstalling the application.)
function GetExternalFilesDir: string;
function GetExternalCacheDir: string;
-
화이부동
2016.11.07 21:01
{$IF DEFINED(IOS) or DEFINED(ANDROID)}
s := TPath.GetDocumentsPath + PathDelim + 'tasks.s3db';
FireTaskList.Params.Values['Database'] := s;
{$ELSE}
FireTaskList.Params.Values['Database'] := 'tasks.s3db';
{$ENDIF}
위 소스에서 sqlite 의 'tasks.s3db는 어느 위치에 있는가요?
아무리 볼려고 해도 볼수가 없습니다.
-
화이부동
2016.11.07 16:32
테터링 샘플을 실행시켰봤는데요.
포토샘플이 노트북은 작동하고 데스크탑은 안되던데요.
이 전송 기반이 와이파이입니까 아니면 블루투스입니까?
-
푸른솔
2016.11.07 23:32
와이파이, 블루투스 다 됩니다.
와이파이(무선)이면 노트북( 또는 PC)과 스마트폰 둘 다 와이파이에 접속해야 하며,
블루투스 이면 기기간 서로 블루투스로 연결이 돼야 합니다...
Firemonkey 안드로이드 스마트폰에서 sqlite DB 보는 방법은?
2016.10.31 16:55
본 게시판 사용시 당부 사항
* 이 게시판은 자유롭게 질문을 올리고 자발적으로 답변을 공유하는 게시판입니다.
* 어느 누구도 답변을 달아야만 하는 책임은 없습니다.
* 따라서 질문을 올리실 때에는 최대한 자세하고 정중하게 질문을 올려 주세요.
* 최대한 질문을 자세히 올려야 답변도 자세히 올라 옵니다.
* 본 질문에 답변을 주시는 여러 개발자님들께 미리 감사드립니다.
-----------------------------------------------------------------------------------------------
안드로이드폰에 sqlite를 설치해서 삽입 삭제 조회를 하고 있습니다.
그런데 이 데이타를 쉽게 볼수 있는 팁이 있으면 좋겠는데요.
delphi xe10.1에 이런 기능이 있을까요?
댓글 14
-
험프리
2016.11.01 13:24
-
화이부동
2016.11.02 17:15
답변감사드립니다.
제가 원하는 것은 PC에서 안드로이드에 쌓인 데이타를 보고 싶다는 의미입니다.
그리고 이 데이타를 PC로 갖어올려면 어떻게 해야하는지요?
mysql의 dbeaver나 sql explorer와 같은 것은 없나요?
-
얄리
2016.11.02 17:49
불가능하죠..
안드로이드 디바이스에 설치된 SQLite는 원격에서 접속할 수있는 DB가 아니고 stand alone으로 구동되는 임베디드용 로컬 DB입니다.
따라서 외부에서 디바이스 내에 있는 SQLite에 접속할 수 없습니다.
저 같은 경우는 안드로이드 폰을 PC에 USB로 외장 하드처럼 연결해놓고 SQLite Browser에서 해당 DB 파일 연결해서 쿼리합니다.
-
화이부동
2016.11.03 11:50
얄리님 번번히 고맙습니다. 서울 사시는가요?
모바일스니핏의 FireDac_SQLite 샘플을 보고 있습니다.
이 걸 보는 목적은 Sqlite의 db 정보가 어느 경로에 있는가를 알기 위해서입니다.
이 경로를 알려주는 샘플 경로는 아래와 같은데요.
procedure TFireDAC_SQLiteForm.TaskListBeforeConnect(Sender: TObject);
var
s : string;
begin
{$IF DEFINED(IOS) or DEFINED(ANDROID)}
s := TPath.GetDocumentsPath + PathDelim + 'tasks.s3db';
FireTaskList.Params.Values['Database'] := s;{$ELSE}
FireTaskList.Params.Values['Database'] := 'tasks.s3db';
{$ENDIF}
end;디버거로 s값을 보면 "'/data/data/com.embarcadero.FireDAC_SQLite/files/tasks.s3db'"로 나타납니다.
따라서 이 경로를 PC 탐색기로 보면 아래와 같이 나타납니다.(첨부파일 참조)
도대체 저 경로를 어디서 찾아야 할까요.
그리고 탐색기로 저 sqlite 파일명인 "tasks.s3db" 검색해도 나타나질 않습니다.
-
얄리
2016.11.03 14:50
아핫. 그렇군요.
저는 안드로이드 스튜디오에서 File Explorer 선택하고 data/data/[어플리케이션 패키지]/databases/*.db 찾아서 로컬에 복사해놓고 쿼리 한적이 있어서요.
그냥 탐색기에서는 안되는 거였군요.
-
푸른솔
2016.11.03 13:17
그 영역은 안드로이드의 '샌드박스'라는 영역입니다.
즉, 안드로이드가 직접 관리하는 보안이 철저한(?)한 영역입니다. 그러므로 PC에서 탐색기로는 절대로 열어 볼 수가 없습니다.
저도 처음엔 그 영역에 DB를 생성하고 탐색기로 열어 볼려고 무지 노력했습니다만 불가능하다는 것을 알았습니다.
지금은 테더링을 통해서 안드로이드와 PC의 데이타를 서로 주고 받고 있습니다.
그 영역의 데이타를 가져 오려면 테더링이나 인디를 사용해서 소켓서버/ftp를 만들어야 하는데 테더링이 편합니다.
예제도 있고요...
테더링도 결국은 인디로 구현되어 있는 p2p형식입니다...
-
화이부동
2016.11.03 14:21
답변 감사드립니다. 몰랐던 내용이네요.
괜히 삽질만 하고 있었습니다.
그럼 별도의 폴더를 만들어서 그곳에다 sqlite db를 저장하면 안될까요.
예를 들자면 sdcard/imsi/ 폴더를 생성하고 여기에다가 sqlite.db를 만들어서 삽입 삭제를 하면 어떤가요?
-
화이부동
2016.11.07 21:02
sqlite db를 가져오는 테터링 샘플을 공유해주실 수 있습니까?
공유해주시면 무척 고마워할겁니다..^^
-
푸른솔
2016.11.03 14:47
SD카드에 저장하면 될 겁니다...
보안이 중요하지 않다면....
-
화이부동
2016.11.07 14:58
이런 경우는 FDPhysSQLiteDriverLink1에 VendorHome과 VendorLib를 어떻게 설정해야 하나요.
Sqlite를 실행하면 에라가 나네요.
스마트폰 OS는 안드로이드입니다.
아래 그리은 Sqlite를 열려고 하는 중입니다.
Vendorhome 경로입니다.
-
험프리
2016.11.07 16:33
VendorHome, VendorLib는 벤더사(SQLite) 라이브러리의 경로를 설정하는 옵션입니다.
아래 부분을 수정해야 합니다.
{$IF DEFINED(IOS) or DEFINED(ANDROID)}
s := TPath.GetDocumentsPath + PathDelim + 'tasks.s3db';
FireTaskList.Params.Values['Database'] := s;{$ELSE}
FireTaskList.Params.Values['Database'] := 'tasks.s3db';
{$ENDIF}Androidapi.IOUtils.pas 의
GetExternalFileDir 등의 함수를 참고하세요.
// File Locations in External memory. (Accessible only to the program, but easily
// readable mounting the external storage as a drive in a computer.
// Files written here are deleted when uninstalling the application.)
function GetExternalFilesDir: string;
function GetExternalCacheDir: string;
-
화이부동
2016.11.07 21:01
{$IF DEFINED(IOS) or DEFINED(ANDROID)}
s := TPath.GetDocumentsPath + PathDelim + 'tasks.s3db';
FireTaskList.Params.Values['Database'] := s;{$ELSE}
FireTaskList.Params.Values['Database'] := 'tasks.s3db';
{$ENDIF}위 소스에서 sqlite 의 'tasks.s3db는 어느 위치에 있는가요?
아무리 볼려고 해도 볼수가 없습니다.
-
화이부동
2016.11.07 16:32
테터링 샘플을 실행시켰봤는데요.
포토샘플이 노트북은 작동하고 데스크탑은 안되던데요.
이 전송 기반이 와이파이입니까 아니면 블루투스입니까?
-
푸른솔
2016.11.07 23:32
와이파이, 블루투스 다 됩니다.
와이파이(무선)이면 노트북( 또는 PC)과 스마트폰 둘 다 와이파이에 접속해야 하며,
블루투스 이면 기기간 서로 블루투스로 연결이 돼야 합니다...
엠바카데로 모바일 튜토리얼을 참고하세요.
http://docwiki.embarcadero.com/RADStudio/Berlin/en/Mobile_Tutorial:_Using_FireDAC_and_SQLite_(iOS_and_Android)