칼럼 타입으로 어떤 것을 지정할 수 있는지 상세하게 알고 싶다면 아래 링크를 참조하세요.
SQLite에서 지원하는 칼럼 타입
테이블은 한 번 만들어지면 삭제하지 않는 이상 동일한 이름으로 만들 수 없습니다.
따라서 매번 동일한 이 SQL문을 실행하게 되면 기존 테이블이 있다는 에러 메시지가 보이게 됩니다.
이전에 이미 만들어진 테이블이 없을 때만 새로운 테이블을 만들도록 하려면 IF NOT EXISTS 키워드를 붙여줍니다.
그 형식은 다음과 같습니다.
CREATE TABLE [IF NOT EXISTS] table_name(col_name column_definition, ...)
[table_option] ...
데이터 저장하기
테이블에 데이터를 추가할 때는 INSERT INTO 문이 사용됩니다.
INSERT INTO 뒤에는 테이블 이름이 오고 그 뒤에 소괄호가 오게 됩니다.
소괄호 안에는 칼럼들이 들어갑니다.
VALUES 뒤의 소괄호 안에는 데이터를 넣을 수 있습니다.
INSERT INTO 테이블명
(칼럼명1, 칼럼명2, 칼럼명3, ... 칼럼명N)
VALUES
(값1, 값2, 값3, ... 값N);
데이터의 자료형이 문자열이면 작은 따옴표를 붙이고 문자열이 아닌 숫자는 작은 따옴표를 붙이지 않습니다.
예를 들어, 다음과 같은 SQL문을 만들 수 있습니다.
db.execSQL( “insert into employee(name, age, phone) values (‘John‘, 20, ‘010-7788-1234‘“ );
SQL문을 실행할 때는 execSQL 메소드를 호출합니다.
데이터 조회하기
데이터를 조회할 때는 SELECT 문을 사용합니다.
SELECT 문은 다음과 같은 형식으로 만들어집니다.
SELECT [* | DISTINCT] column_name [,columnname2]
FROM tablename1 [,tablename2]
WHERE [condition and|or condition...]
[GROUP BY column-list]
[HAVING conditions]
[ORDER BY “column-list“ [ASC | DESC] ]
조금 복잡해 보이긴 하지만 SELECT 뒤에 조회하려는 칼럼들이 오고 FROM 뒤에는 테이블 이름이 온다고 생각하면 쉽습니다.
가장 단순한 형태라고 할 수 있죠.
여러분이 저장했던 데이터를 employee 테이블로부터 조회하고 싶다면 다음과 같은 SELECT 문을 사용할 수 있습니다.
select name, age, address from employee
만약 조건을 붙이고 싶다면 WHERE 문을 넣을 수 있죠.
이렇게 만들어진 SQL문은 rawQuery 메소드를 호출하면서 전달합니다.
Cursor c1 = db.rawQuery(“select name, age, address from employee“, null);
println(“cursor count : “ + c1.getCount());
조금 더 복잡한 데이터를 다루고 싶을 때는 group by, having, order by 등을 사용하는 경우가 많습니다.
group by, having과 order by 사용법에 대해서는 아래 링크를 참조하세요.
group by 사용하기
having 사용하기
order by 사용하기
커서 다루기
rawQuery 메소드를 호출했을 때 반환되는 객체는 Cursor입니다.
조회했을 때 반환되는 레코드는 한 개일 수도 있고 여러 개일 수도 있는데 이 Cursor 객체를 이용하면 조회된 레코드를 하나씩 참조하면서 데이터를 꺼내볼 수 있습니다.
Cursor 객체는 각각의 레코드를 moveToNext 메소드로 넘겨볼 수 있도록 하며 그 안에 들어있는 칼럼 데이터는 getString, getInt 와 같이 자료형에 맞는 메소드를 이용해 확인할 수 있도록 합니다.
for문이나 while문을 이용하면 Cursor에서 참조하는 모든 조회 결과를 확인해볼 수 있겠네요.
for (int i = 0; i < recordCount; i++) {
c1.moveToNext();
String name = c1.getString(0);
int age = c1.getInt(1);
String phone = c1.getString(2);
println(“Record #“ + i + “ : “ + name + “, “ + age + “, “ + phone);
}
커서 객체로 칼럼 데이터를 확인할 때 사용할 수 있는 메소드들로는 다음과 같은 것들이 있습니다.
public abstract String getString (int columnIndex)
public abstract short getShort (int columnIndex)
public abstract int getInt (int columnIndex)
public abstract long getLong (int columnIndex)
public abstract float getFloat (int columnIndex)
public abstract double getDouble (int columnIndex)
public abstract byte[] getBlob (int columnIndex)
최근댓글