Please Enable JavaScript!
Gon[ Enable JavaScript ]

안드로이드(android) 데이타베이스(DB) sqlite3 다루기 (1)

안드로이드 개발

안드로이드(android) 데이타베이스(DB)  sqlite3 다루기 (1)

 

개발환경 : JDK 1.5, eclipse-galileo, android Google API 7, window XP

 

기본적으로 안드로이드는 sqlite3 를 사용한다.

sqlite 는 서버가 필요하지 않으며 설정도 없고 트랜젝션을 지원하는 데이터베이스

엔진이다. 파일구조처럼 디스크파일에서 읽고 직접쓴다. 그리고 데이터 베이스의 특징인

인덱스들과 트리거, 뷰등을 포함하며 하나의 디스크파일에 포함하고 있다.

 

이렇듯 컴팩트하면서도 웬만한 기능들은 다 지원한다. 그리고 엄청나게 작은 라이브러리

크기를 자랑하므로 소규모 기기에서 쓰기에는 안성맞춤이다. 그래서 아이폰과 안드로이드에서

차용해서 사용하나 보다. 원문 사이트는 다음과 같다.

http://www.sqlite.org/about.html

 

(1) adb shell 을 통한 접근과 관리

 

adb 는 에뮬레이터와의 브릿지 역할을 한다. DB 에 관련된 것도 이것을 통해

가능하다. 원시적인 방법이고 효율이 떨어지긴 하지만 알아둬야 한다.

먼저 에뮬레이터를 띄우고 shell 프로그램으로 들어간다.

사용예를 보기위해 시스템에서 만들어놓은 contact2.db 를 볼것이다. 이것은

연락처 관리와 관련된 DB 이다. data > data 로 들어가게 되면 현재 설치 되어있는

어플리케이션 리스트가 나온다. 그중에 com.android.providers.contacts 에 가면

databases 라는 폴더가 있다. 그곳에 contacs2.db 가 있으므로 shell 창을 통해

들어가자.

sqlite3 에 파일명인 contacts2.db 를 넘겨주자. 그러면 DB 를 조작할수 있는

모드로 전환되는 것을 볼수 있다. 만약 뒤에 db 를 빼고 쓰면 contacts2 라는 파일이

하나 새로 생성되므로 꼭 전체 파일명을 파라미터로 넘기자

사용법은 그림에서도 나와 있는것처럼 .help 를 치면 명령어마다 설명이 달여있어

하나씩 실행해 보면 쉽게 알수 있을 것이다.

먼저 contact 정보 DB 는 어떻게 만들어 졌는지 스키마 명령어를 실행해서 알아보자.

몇페이지 분량의 내용이 나올것이다. 다 볼 필요없이 보고자 하는 테이블의 스키마를

볼려면 파라미터로 테이블 명을 넘기면 된다

그런데 현재 어떤 테이블이 있는지 조차도 알아보기 힘든 사항이다. 그럼 테이블 리스트를

뽑는 명령어를 실행해 보자.

이런 식으로 하나씩 열어서 살펴본다면 안드로이드에서 DB를 어떻게 구성하고 사용하는지

조금은 알아볼수 있을 것이다

sqlite 모드를 빠져나오고 싶으면 .quit 를 실행하면 된다. 그럼 shell 모드로 나오게 된다.

 

(2) 직접 만든 DB 만들고 열어보기

 

안드로이드 개발할 때 웹 어플에서 쿼리는 따로 분리해서 모아놓는다. 주로

properties xml 에 두고 관리하게 되는데 코드에서는 그 key 값을 불러와

처리하게 된다. 관리하기 편하고 수정시 재컴파일이 필요없어 유용하다.

안드로이드도 그런 개념을 도입해 values 폴더에 쿼리값을 관리한다. 쿼리를

문자열로 저장해서 필요할 때 불러서 사용하고 수정시 xml 내용만 바꾸면 된다
이것을 소스에서는 DB 관련 helper 클래스를 만들어 호출한다

이렇게 호출해서 테이블을 만든 것이 제대로 되어있는지 확인해 본다.

DB 를 확인할려면 프로그램이 있는 폴더를 찾아야 한다. 프로그램은 data > data 폴더안에

모여있다. 어플 만들 때 패키지 명으로 폴더가 만들어져 있다.

내가 만든 어플 패키지는 com.d네가 다른 어플과 함께 있는 것을 볼수있다.

이 폴더의 databases 안에 DB 가 만들어져 저장되게 된다.

다음 그림은 좀더 쉽게 찾기 위해 이클립스 플러그인 DDMS 로 찾아보자.

아래 그림과 같이 확장자가 db 로 된 파일이 보일 것이다

그리고 sqlite3 프로그램을 실행시켜 안을 열어보자. Create 를 실행한 DB 가 제대로

만들어졌는지 말이다. 아래 그림과 같이 schema 를 실행하면 위에서 만든  테이블들의

내역이 보이게 된다

 

(3) sqlite3 자료형

 

참고로 일반적인 DB 에서 사용하는 자료형과 sqlite3 에서 사용하는 자료형을

비교한 표이다. 보면 알겠지만 대충정리하자면 일반 숫자는 INTEGER , 소수점이 들어간

데이터는 REAL, Date 관련은 NUMERIC, CLOB TEXT 이다.

 

(4) 쿼리 에러 났을 때

 

DB 를 만드는 Create 쿼리를 실행했는데 아래와 같이 문제가 있어서 에러가 났다.

생성할 때 에러가 나면 db 자체가 만들어지지 않으며 이전에 실행한 쿼리에 대한

내용도 롤백이 되게 된다. 그리고 아래와 같이 Couldn’t open moku.db fo writing

라는 메시지와 함께 아래에 상세 에러내용이 뜨므로 쿼리문에 문제가 있다고

판단하고 그곳을 집중적으로 찾아 에러를 해결하자

 

다음편은 shell 이 아닌 여러가지 툴로 다뤄본다.


Posted by 녹두장군

댓글을 달아 주세요

  1. 재미 2012.12.07 14:03  댓글주소  수정/삭제  댓글쓰기

    캄사합니다. 정말 궁금했던 부분인데 ^^