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/
'Programming Practice > Android' 카테고리의 다른 글
[Contacts Provider]연락처 그룹 생성 및 입력 방법 (0) | 2014.10.26 |
---|---|
[Contacts Provider]연락처 입력 방법 (0) | 2014.10.26 |
[Contacts Provider]연락처 기본 개념 (0) | 2014.10.26 |
한 화면에서 버튼을 눌렀을 때 다른 화면을 호출하기 (0) | 2014.10.17 |
화면에 리스트 목록 표시하기 (0) | 2014.10.17 |