안드로이드 에서 SQLite3 사용하기

이제 안드로이드 에서 제공하는 sqlite3 를 어떻게 연결하고 핸들링 하는지 알아보자.

Sqlite3 는 안드로이드 SDK 에 포함되어 있기 때문에 따로 구해서 설치 하지 않아도 된다.

(상세한 SQLite3 사용법은 http://www.sqlite.org/sqlite.html 에서 참고하면 된다)

여기에 사용한 소스는 http://code.google.com/android/intro/tutorial.html 에서 다운로드

받을수 있다.


 

1.   Database Open/Create

























안드로이드 에서는 SQLiteDatabase 라는 클래스를 제공하기 때문에 간편하게 slqite

다룰수 있게 해준다.

Database 를 오픈하거나 생성하기 위해서는 Context 클래스에서 제공하는

openDatabase(String file, CursorFactory factory);

createDatabase(String name, int version, int mode, CursorFactory factory); 메쏘드를

사용해 주면된다.

Context Context 를 상속받은 하위클래스에서 오버라이딩 해서 쓰면 되겠다..

대표적으로 Activity Context 를 상속받았기 때문에 Activity 를 상속받은

사용자 생성 클래스에서 사용할 수 있다.

 

SQLite 는 파일데이터베이스 이기 때문에 FileNotFoundException 으로 예외처리를 해주면 되고

openDatabase 할때도 첫번째 아규먼트로 Database 파일이름을 전달해주면 된다.

 

소스코드를 보면 database 를 열다가 예외가 발생하면 생성하는 코드를 볼수 있다.

실제로 sqlite 커맨드에서 sqlite3 data 했을때 database 가 존재하면 열고 없으면 생성하게

되어있다. 커맨드 부분은 마지막으로 살펴보겠다.



 

2.   CRUD




















































Insert -> createRow

Select all -> fetchAllRows

Select    -> fetchRow

 

각 함수들을 통해서 CRUD 가 어떻게 일어나는 지는 금방 알수 있기 때문에 따로 설명하진 않겠다.



 

3.   ADB 커맨드 사용하기

SQLite3 커맨드를 사용하기 위해서는 우선 adb 를 사용할 수 있어야 한다.

ADB(Android Debug Bridge) http://code.google.com/android/reference/adb.html

는 안드로이드 개발을 위한 디버깅 툴이다.

우리가 지난 시간 SDK 를 설치할 때 설치 Root 아래 tools 까지 path 로 잡아준 적이 있다.

tools 안에 adb 가 있다.

 

Command 창을 하나 열고 adb 라고 쳐보자



























뭔가 잔뜩 메시지가 출력이 된다. adb 사용법에 대한 help 메시지가 출력된 것이다.

 

그럼 adb 를 이용하에 에뮬레이터 속으로 들어가보자.

 

adb 는 에뮬레이터와 소켓통신을 하는 디버깅 툴이다. 일종의 C/S 로 보면 이해하기가

쉬울 것이다.

따라서 에뮬레이터는 서버이고 adb 는 클라이언트로서 접속할 서버가 당연히 있어야 하기

때문에 에뮬레이터가 구동되어 있어야 한다.

 

에뮬레이터를 띄우지 않고 접속 하려면 아래와 같은 메시지가 출력된다.



























데몬이 안떠 있다는 것이다. 그리고 디바이스가 없다고 하네..

그래서 에뮬을 띄워주고 다시 접속을 시도한다



























접속이 되었다..이제부터 디버거 가 에뮬레이터와 다리 역할을 하면서 각종 메시지를

전달해 줄것이다. (그래서 debug bridge 라고 하는것이구만..)

 

….“#” 은 어디서 많이 본 것 같다.

그렇다, 안드로이드가 리눅스 기반 이란건 알고 있을것이다. 저건 바로 쉘프롬프트 이다.



























리눅스 라면 ls 를 안해볼수가 없지.

역시 에뮬레이터의 Root 디렉토리의 구조가 출력이 된다.

참고로 로컬머신에서 물리적인 패스를 찾을려고 하면 없을것이다. 찾지말자..찾느라 시간 많이

허비했다..;;;



4.   SQLite3 접속하기

이제 sqlite3 에 접속을 시도해보자

제일 처음 database 를 생성했는데. 이 생성한 database file 는 어디에 있을까?

Database 를 생성하면 파일은 /data/data/<package_name>/databases 아래에 생성된다.



























Root 에서 해당경로로 찾아가 보면 data 라는 sqlite3 Database file 이 보일 것이다.

 

Database file 을 찾았으니 안을 봐야겠다.



























접속명령어는 sqlite3 이며 인자로 database file 명을 주면 된다.

file명은 full path 를 주어야 하기 때문에 해당 파일이 있는 경로로 이동해서 접속을 하던가

아니면 full path 명을 주면 된다.

맨 처음 자바코드로 살펴보았듯이 여기서 data 라는 database 가 없다면 생성하고 있으면

오픈할 것이다.

 

 

이제 접속했으니 내용을 보자.



























테이블 명령을 치니 “todo” 라는 테이블이 하나 나온다.

그럼 이 테이블 안의 row 를 보자.



























SQL 은 표준을 쓰니까 크게 걱정할 필요 없을 것 이고, 이렇게 데이터를 확인해보면 된다.

 

Sqlite 는 파일을 사용하기 때문에 대단히, 엄청나게 빠르다..MySQL 과 비교해도 최소 2

많게는 10배 이상 빠르다고 한다

물론 버그가 아직 존재하지만 모바일 디바이스에서 운용하기에는 이만한 DB도 없을것이다.

 

by slowtrain | 2007/11/28 14:20 | 개발관련 | 트랙백 | 덧글(0)
트랙백 주소 : http://mnd777.egloos.com/tb/1057423
☞ 내 이글루에 이 글과 관련된 글 쓰기 (트랙백 보내기) [도움말]

:         :

:

비공개 덧글



< 이전페이지 다음페이지 >