SQLite(수정중)
저장 클래스와 데이터 유형
테이블의 각 열은 특정 유형의 데이터를 포함하도록 만들어졌다. 예를들어 DRINK테이블에서 DESCRIPTION 열은 텍스트 데이터만 저장한다. 아래는 SQLite에서 사용할 수 있는 주요 데이터 유형과 각 유형이 저장할수 있는 데이터다.
INTEGER |
정수 유형 |
TEXT |
문자열 유형 |
REAL |
부동소수점수(floating-point)유형 |
NUMERIC |
불린, 날짜. 날짜-시간 |
BLOB |
이진 대형 객체(Binary Large Object) |
대부분의 데이터베이스 시스템과 달리 SQLite에서는 열 크기를 지정할 필요가 없다.
내부적으로 데이터 유형은 더 다양한 저장클래스로 변환되므로 저장할 데이터 종류를 아주 자세히 지정하거나 데이터 크기를 명시할 필요가 없다.
SQL로 테이블 생성하기
SQLite와 상호작용하는 모든앱은 SQL표준DB언어를 이용해야 한다.
- 테이블 생성 SQL 명령문
CREATE TABLE DRINK ( _ID INTEGER PRIMARY KEY AUTOINCREMENT,
NAME TEXT,
DESCRIPTION TEXT,
IMAGE_RESOURCE_ID INTEGER)
_id컬럼은 테이블의 PK이며, AUTOINCREMENT라는 키워드로 고유 정수를 자동생성한다.
DB를 생성하면 onCreate()메서드를 호출한다.
SQLiteDataBase의 execSQL()메서드로 데이터베이스에 SQL을 실행할 수 있다. 이 메서드는 실행하려는 SQL 한개를 인자로 받는다.
execSQL(String sql);
- onCreat()메서드를 이용해 DRINK 테이블을 생성하는 코드
이러면 빈 DRINK테이블이 생성된다.
insert() 메서드로 데이터 추가하기
데이터를 SQLite db에 추가하려면 테이블에 어떤 값을 삽입할지 지정해야한다. 그러기 위해 ContentValue 객체를 생성해야 한다.
ContentValue drinkValues = new ContentValue();
ContentValue객체는 데이터 집합을 설명한다. 보통 각 데이터 행을 한개의 ContentValue로 생성한다.
put() 메서드를 사용해 ContentValue객체에 데이터를 추가한다.
이 메서드는 키/값 쌍의 데이터를 추가한다.
drinkValues라는 ContentValue객체에 라떼의 이름, 설명, 이미지리소스를 추가하는 코드
중간 파라미터는 보통 null로 설정한다. 그러면 객체가 비어있을때 빈 행을 삽입한다.
null 값을 테이블의 컬럼 이름으로 바꿀수 있지만 바람직하진 않다.
insert() 메서드는 한번에 여러개의 값을 삽입한다.