SQLite 데이터베이스 작업
SQLite를 만들고 나면 SQL 문을 사용하여 데이터 추가, 데이터 검색, 데이터베이스 수정과 같은 작업을 할 수 있습니다.
지원되는 SQL 문 및 해당 구문의 목록은 www.SQLite.org를 참조하십시오. Database API는 FTS2 및 RTREE를 지원하지 않습니다.
문을 실행하는 방법에는 Statement 객체를 만들거나 Database.executeStatement를 사용하는 두 가지 방법이 있습니다.
Statement 객체를 사용하여 문 실행
다음 단계는 Statement 객체를 사용하여 문을 실행하는 방법을 개략적으로 보여줍니다.
- Database.createStatement 메소드를 사용하여 Statement 객체를 만듭니다.
- Statement.prepare 메소드를 호출하여 실행할 문을 준비합니다.
- 문의 매개 변수를 연결합니다. 이는 선택 사항이지만 여러 번 문을 실행하는 경우 성능을 향상시킵니다.
- 문을 실행합니다.
문이 결과를 반환하면(예: SELECT 문) Cursor 객체를 반환하는 Statement.getCursor를 호출하여 이를 실행합니다.
- 문이 결과 세트를 반환하지 않으면 다음 메소드 중 하나를 호출하여 이를 실행하십시오.
- Statement.executeUpdate: 데이터를 업데이트하고(UPDATE 문과 함께 사용) 연결 매개 변수와 함께 여러 번 문을 실행하는 경우 사용합니다.
- Statement.executeInsert: 데이터를 삽입하고(INSERT 문과 함께 사용) 연결 매개 변수와 함께 여러 번 문을 실행하는 경우 사용합니다.
- Statement.execute: 연결 매개 변수를 사용하고자 하는 경우 사용합니다.
- 문이 결과 세트를 반환하면 반환된 커서를 행 단위로 반복하여 결과 세트를 가져옵니다. 이 단계는 Cursor 인터페이스를 사용하여 수행합니다. 이 인터페이스는 모든 환경에서 사용할 수 있지만 앞으로만 이동합니다. 양방향 커서 이동은 소형 결과 세트에 한해 BufferedCursor 클래스를 사용합니다.
주: 리소스를 확보하려면 명시적으로 문을 닫아야 합니다.
다음 예는 행을 업데이트합니다.
Statement st = d.createStatement("UPDATE Account set Balance = ? WHERE AcctNo > ?");
try
{
st.prepare();
Object[] bindParams = {new Integer (2000), new Integer (100)};
st.executeUpdate(bindParams);
}
finally
{
st.close();
}
Statement 객체를 사용하지 않고 문 실행
결과 세트를 반환하지 않는 쿼리를 실행하고 연결 매개 변수를 사용하지 않는 경우에는 Statement 객체를 만들 필요가 없습니다. 대신, 단일 호출에서 문 준비, 실행 및 닫기를 수행하는 Database.executeStatement를 사용할 수 있습니다.
다음 예에서는 테이블을 만듭니다.
Database d = null;
try {
d = DatabaseFactory.create("hello.db");
d.executeStatement( "CREATE TABLE t (a INTEGER PRIMARY KEY, b BLOB);" );
} catch (Exception e) {
System.out.println( e.getMessage() );
} finally {
try {
d.close();
} catch (DatabaseException e) {
}
}
다음 주제: SQL 매개 변수 사용
이전 주제: 모범 사례: SQLite 데이터베이스 성능 최적화