programming/android

[Android] SQLite (안드로이드 내장 데이터베이스)

3. SQLite (안드로이드 내장 데이터베이스)

 

3.1 SQLite

3.1.1 임베딩 DB

 

3.1.2 특징

  1. RIGHT and FULL OUTER JOIN 지원 안함
  2. RENAME TABLE and ADD COLUMN만 지원
  3. ROW triggers 지원
  4. VIEWS in SQLite are read-only
  5. GRANT and REVOKE 지원 안함

 

 

3.2 SQLite API

3.2.1 DB 접속

3.2.1.1 SQLiteOpenHelper

DB 파일명, DB버전 정보 설정(SQLite DB는 파일별로 관리됨)

onCreate: DB 최초 생성 시 한번 호출

onUpgrade: DB 버전이 올라갔을 때만 호출

 

3.2.1.2 SQLiteDatabase에서 DB 연결

getWritableDatabase();
getReadableDatabase();

 

3.2.2 테이블 작업

3.2.2.1 삭제

db.execSQL("DROP TABLE (...)");

 

3.2.2.2 생성

db.execSQL("CREATE TABLE Tbl (id INTEGER PRIMARY KEY AUTOINCREMENT, name TEXT, val REAL)");

 

3.2.3 데이터 추가

3.2.3.1 db.execSQL에서 insert, update, delete 실행

db.execSQL("INSERT INTO Tbl (name, val) VALUES ('kim', 8));

 

3.2.3.2 SQLiteDatabase의 insert(), update(), delete() 사용

ContentValue cv = new ContentValues();
cv.put(tbl.name, "kim");
db.insert("tbl", getNullColumnHack(), cv);

 

3.2.4 데이터 조회

3.2.4.1 실행방법

  • rawQuery(): select문 직접 실행
  • query(): 메서드 인자로 각 부분의 값을 넘겨 실행
    테이블명, 컬럼 이름 배열, WHERE 구문, WHERE 인자값, GROUP BY, ORDER, BY HAVING
  • SQLiteQueryBuilder 클래스
    컨텐트 프로바이더에 적용 가능

3.2.4.2 조회 결과는 Cursor 이용

Cursor에서는 여러 건의 결과를 하나씩 받아오면서 처리 가능

 

 

3.3 SQLite Database 관리 도구

3.3.1 console 활용 방법

Android SDK 설치 디렉토리의 platform tools 디렉토리로 이동

# 안드로이드 에뮬레이터로 접속
adb shell

# 루트 사용자로 변경
su

# 데이터베이스 디렉토리로 이동
cd data/data/example.com/ex03_db/databases

# SQLite 로그인 후 product.db 파일 오픈
sqlite3 product.db

# 테이블 목록 확인
.tables

 

 

cmd

cd C:\Users\사용자계정\AppData\Local\Android\sdk\platform-tools

'아예 이 디렉토리를 path 환경 변수에 잡아도 좋다.

 

> insert into product (product_name, price, amount) values

   ('냉장고', 500000, 5);

> select * from product;

 

 

3.3.2 GUI 툴 활용

SqliteExpert 다운로드

 

 

3.4 실습예제

3.4.1 res/layout/main.xml

3.4.2 MainActivity.java

3.4.3 ProductDTO.java

3.4.4 ProductDAO.java

3.4.5 res/layout/product.xml

3.4.6 res/layout/product_row.xml

3.4.7 ProductActivity.java

3.4.8 res/layout/product_add.xml