본문 바로가기

Programming Practice/Android

SQLite database 에 데이터 저장하고 조회하기

1. SQLite database 개념

- Android device 내 text file 형태로 저장된다.

- 크기가 350k 밖에 안되는 lightweight 한 database


2. SQLite database 이용

   DB 구성과 CRUD method를 하나의 class 에서 작성한다. SQLiteOpenHelper 를 extends 하는 class 는 전체 class 의 inner class로 작성한다.

   1) DB 구성

      a. SQLiteOpenHelper 를 extends 하는 class 에서 아래 3개의 method 에 로직 구현

      b. 3개의 method 로직 구현  

 생성자

1) database 생성 및 연결

2) version 정보 설정

 onCreate(SQLiteDatabase database)

테이블 생성 

* primary key 인 id 컬럼이 있어야 하며, column 명은 '_id', 데이터 유형은 INTEGER가 되어야 한다.

* String을 더해서 만든 쿼리가 실제 쿼리와 동일해야 한다. 띄어쓰기 주의!

 onUpgrade(SQLiteDatabase database,

int oldVersion, int newVersion)

database schema 변경 

(ex. 테이블 drop 및 재생성)

   

   2) CRUD method 구현

      a. 입력 

      * key 와 value를 가진 ContentValues 라는 parameter를 이용한다.

      * database.insert 라는 method를 이용한다.

      * 자세한 사용법은 http://developer.android.com/reference/android/database/sqlite/SQLiteDatabase.html 에서 insert로 조회


      b. 조회

      1) 조건 없이 전체 컬럼을 조회할 때는 database.rawQuery 이용

      2) 일반적으로는 data.query 이용

      * 자세한 사용법은 http://developer.android.com/reference/android/database/sqlite/SQLiteDatabase.html 에서 query로 조회
 


   3) CursorAdapter를 extends 한 Adapter 사용

 

 BaseAdapter

CursorAdapter 

 view 구성

1. getCount

 - iterate 할 횟수 지정

2. getView

 - LayoutInflater 를 통한 View 선언

- view 구성

- 생성한 View return

1. 생성자에서 cursor를 파라미터로 받기

ex)

public TimeAdapter(Context context, Cursor cursor) {

   super(context, cursor);

}

2. newView 

- LayoutInflater 를 통한 View 선언 

- 생성한 View return

3. bindView 

- view 구성

* cursor에 반드시 '_id' 컬럼값이 포함. 그렇지 않을 경우, "java.lang.IllegalArgumentException: column '_id' does not exist" 내용으로 exception이 남. 이유는 CursorAdapter overview 에서 '_id'를 포함하도록 되어 있기 때문이다. "The Cursor must include a column named "_id" or this class will not work"

 onActivityResult 에서 조회결과가 변경된 것 알려주기

notifyDatasetChanged

changeCursor(Cursor) 


참고) Cursor iterate 하는 방법



참고 : http://www.androidhive.info/2011/11/android-sqlite-database-tutorial/