안드로이드 프로그래밍 4주차
수업 내용
- SQLite 연동 및 데이터 추가와 값 가져오기
SQLite란?
- 공식 사이트의 설명에 의하면 SQLite는 작고 빠르며, 독립적이고, 신뢰성과 완전한 기능을 갖춘 C언어 기반 SQL 기반 엔진 라이브러리다.
- 안드로이드에서는 내장 DB로 SQLite를 사용한다.
SQLite의 작동방식
SQLiteOpenHelperr 클래스
- DB 생성 및 테이블 생성하는 용도
- 상속 후 재 정의하여 사용
SQLiteDatabase 클래스
- SQL문 실행용
Cursor 인터페이스
- 커서 이동용
- 커서: DB에 저장된 테이블의 행을 참조해 데이터를 가져오는 역할을 함
주요 메소드
| 클래스 또는 인터페이스 | 메소드 명 | 용도 |
|---|---|---|
| SQLiteOpenHelper 클래스 | 생성자 | DB 생성 |
| onCreate() | 테이블 생성 | |
| onUpgrade() | 테이블 제거 및 재생성 | |
| getReadableDatabase() | 읽기 전용 모드로 DB 오픈 SQLiteDatabase 반환 | |
| getWritableDatabase() | 읽고 쓰기 전용 모드로 DB 오픈 SQLiteDatabase 반환 | |
| SQLiteDatabase 클래스 | execSQL() | SQL 문(Insert, Update, Delete) 수행 |
| close() | DB 종료 | |
| query() rawQuery() | Select 실행 후 커서 반환 | |
| Cursor 인터페이스 | moveToFirst() | 커서의 제일 첫 행으로 이동 |
| moveToLast() | 커서의 제일 마지막 행으로 이동 | |
| moveToNext() | 현재 커서의 다음 행으로 이동 |
사용한 코드
DB 처리용 클래스
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
public class DBClass extends SQLiteOpenHelper{
public DBClass(Conetext context){ //Create database
super(context, "groupDB", null, 1);
}
@override
public void onCreate(SQLiteDatabase db){ //Table Create
db.execSQL("Create Table testTable(gName Char(20) Primary Key, gNum Integer)");
}
@override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion){
//If same table exists, deletes and recreate it
db.execSQL("Drop Table IF Exists testTable");
onCreate(db);
}
}
- 생성자와 필수메소드 [onCreate(), onUpgrade()]가 필요함
- Code - Override Methods를 이용하여 코드를 불러올 수 있다
데이터베이스 생성
- DB 처리용 클래스의 생성자를 이용하여 데이터베이스의 생성이 가능하다
- 매개변수로 @Nullable Context, @Nullable String, @Nullable SQLiteDatabase.CursorFactory, int를 가진다
- 각각의 매개변수의 의미는 다음과 같다
- context: 데이터베이스로의 경로를 찾는 목적으로 사용된다
- name: 생성할 데이터베이스의 이름을 의미한다
- factory: 커서 오브젝트를 생성하거나 기본값을 null로 지정하는 목적으로 사용된다
- version: 데이터베이스의 번호를 의미하며(1로 시작한다), onUpgrade나 onDowngrade를 이용하여 값을 조절할 수 있다
테이블 생성
onCreate를 이용하여 테이블의 생성이 가능하다
- 매개변수로 SQLiteDatabase를 가진다
- onCreate 함수 내에 db.execSQL(“Create Table 테이블명(변수명 변수 타입 primary key, 변수n 변수타입);”);를 넣어 테이블을 생성할 수 있다
- 예시
1 2 3 4 5 6
@Override public void onCreate(SQLiteDatabase db) { //테이블 생성 //매개변수 SQLiteDatabase db execSQL("쿼리") //테이블 생성 쿼리를 기입 Query문 db.execSQL("Create Table groupTBL(gName CHAR(20) Primary Key, gNumber Integer);"); } //onCreate
테이블 초기화
- 테이블의 초기화 방법은 간단하다
- onUpgrade혹은 onDowngrade에서 테이블의 존재여부를 확인 후 삭제 및 테이블 생성함수를 호출하면 된다
- 테이블의 존재여부는 다음과 같은 쿼리의 실행을 통해 가능하다
1
db.execSQL("Drop Table IF Exists 테이블명");
이 기사는 저작권자의 CC BY 4.0 라이센스를 따릅니다.