본문 바로가기

프로그래밍/Android

SQLite Database

 

 

그동안 db 사용할 일이 없어 그다지 살펴보지 않았는데, 이번에 내부 자료구조를

저장해야 할 일이 생겨 급하게 살펴보는 중...

 

SQLiteOpenHelper, SQLiteDatabase

데이터는 MediaStore 에서처럼 위 데이터베이스 클래스를 통해 쿼리하고, Cursor를 통해 각 row를

전달받게 된다.

데이터 베이스에 자료를 넣기 위해서는 ContentValues 에 데이터를 put 해서 insert, update 해주면 된다.

 

>> SQLiteOpenHelper

SQLiteOpenHelper를 통해 SQLiteDatabase 객체를 전달받아 db에 쿼리 등 작업이 이루어지게 된다.

 

SQLiteOpenHelper(Context, String, SQLiteDatabase.CursorFactory, int )

SQLiteOpenHelper(Context, String, SQLiteDatabase.CursorFactory, int, DatabaseErrorHandler )

생성시 데이터베이스 이름과, 커서 팩토리, 버전정보 를 전달 한다.

 

void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion);

db의 버전이 변경되었을때 호출되는데, helper 생성 시 버전에 따라 이 메쏘드가 호출되면,

기존 테이블등의 제거(기존 버전) 하고, 새로운 테이블에

 

void onCreate(SQLiteDatabase db );

db가 없는 경우 db를 생성하고, 접근이 가능하게 된다.

필요한 경우 이곳에서 기본 테이블을 생성한다.( db.execSQL() )

 

위 요소는 필수 요소이며,

onOpen , onDowngrade, getReadableDatabase, getWritableDatabase, close 메쏘드를 제공한다.

 

 

 

>> SQLiteDatabase

helper 없이 db를 생성할 수 있는데,

SQLiteDatabase.openDatabase() / SQLiteDatabase.openOrCreateDatabase() 제공하고 있다.

직접 path나 파일명을 지정하고,

OPEN_READWRITE , OPEN_READONLY , CREATE_IF_NECESSARY , NO_LOCALIZED_COLLATORS 등의 플래그를 사용해 해당 DB를 open , 생성 하게 된다.

 

execSQL

SQL 문장을 실행하는 메쏘드

아래 쿼리는 SELECT에 한정되고, 커서를 통한 ROW 접근을 위한 메쏘드이다.

테이블 생성이나 제거등 쿼리는 execSQL을 사용한다.

쿼리(query)

몇개의 메쏘드로 나뉘는데, 인자들은 아래와 같다. 사용하지 않는 값은 null

유니크한 row여부

테이블명

컬럼명(String [])

Where 절(WHERE 문자 제외)

Where 절 인자(String []) : WHERE 절에서 =? 등으로 사용시

groupBy(GROUP BY 문자 제외)

having(HAVING 문자 제외)

orderBy(ORDER BY 문자 제외)

limit

 

insert ( 테이블명, nullColumnHack, ContentValues )

update( 테이블명, ContentValues, WHERE, WHERE 인자 )

delete ( 테이블명, WHERE, WHERE 인자 )

close()

'프로그래밍 > Android' 카테고리의 다른 글

SurfaceView/GLSurfaceView  (0) 2011.10.11
Custom layout, layoutinflater  (0) 2011.10.11
MediaStore 썸네일 데이터 관련 정리  (0) 2011.09.26
뷰의 크기 변경,이동  (0) 2011.09.23
리스트뷰 메쏘드 몇개  (0) 2011.09.22
Edittext 관련 사항들  (0) 2011.09.18
MediaStore 오디오 재생목록  (0) 2011.09.17
List adapter  (0) 2011.09.15
낙서  (0) 2011.09.07
터치 이벤트 처리순서  (0) 2011.09.01