" /> 안드로이드 프로그래밍 4주차 | BlackWerf's Blog
포스트

안드로이드 프로그래밍 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로 시작한다), onUpgradeonDowngrade를 이용하여 값을 조절할 수 있다
테이블 생성
  • 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 라이센스를 따릅니다.