반응형
SQLite 주요 API
Objective-C에서 사용하는 API 위주로 설명한다.
sqlite3_open()
- 데이터베이스 파일이 있다면 파일을 열고, 없다면 생성 후 연다.
- 성공 시 SQLITE_OK 리턴한다.
int sqlite3_open(
const char *filename, /* Database filename (UTF-8) */
sqlite3 **ppDb /* OUT: SQLite db handle */
);
* 데이터베이스 파일 open, close의 경우는 상황에 따라 처리한다.
- 많은 양을 빠르게 작업할 때 작업 시작 시 open, 완료 후 close 진행
- 적은 양을 처리할 때, 작업 별로 open, close 진행
sqlite3_close()
- 데이터베이스 파일을 닫는다.
- 성공 시 SQLITE_OK 리턴한다.
int sqlite3_close(sqlite3*);
sqlite3_prepare_v2()
- SQL문을 컴파일한다.
- SQL문을 준비하고 sqlite3_stmt 구조에 저장한다.
- sqlite3_prepare()는 레거시이므로 사용하지 않는다.
- 성공 시 SQLITE_OK 리턴한다.
int sqlite3_prepare_v2(
sqlite3 *db, /* Database handle */
const char *zSql, /* SQL statement, UTF-8 encoded */
int nByte, /* Maximum length of zSql in bytes. */
sqlite3_stmt **ppStmt, /* OUT: Statement handle */
const char **pzTail /* OUT: Pointer to unused portion of zSql */
);
반응형
sqlite3_step()
- sqlite3_prepare_v2() API에 의해 준비된 SQL문을 실제로 실행한다.
- 성공 시 SQLITE_DONE 리턴한다.
- 그러나 결과값이 SELECT 같이 집합이 있는 경우는 SQLITE_ROW를 리턴한다. 이 때는 sqlite3_step()으로 결과값을 가져올 수 있으며, SQLITE_ROW 외의 값이 나오면 sqlite3_step()을 빠져나와 sqlite3_finalize()로 내부적으로 사용했던 메모리 공간을 해제한다.
int sqlite3_step(sqlite3_stmt*);
sqlite3_finalize()
- 수행하던 구문을 종료한다.
- 메모리에 있는 SQL문을 삭제한다.
int sqlite3_finalize(sqlite3_stmt *pStmt);
sqlite3_exec()
- sqlite3_prepare_v2(), sqlite3_step(), sqlite3_finalize()를 둘러싼 래퍼 API이다.
- SQL 문을 실행한다.
- 성공 시 SQLITE_OK 리턴한다.
int sqlite3_exec(
sqlite3*, /* An open database */
const char *sql, /* SQL to be evaluated */
int (*callback)(void*,int,char**,char**), /* Callback function */
void *, /* 1st argument to callback */
char **errmsg /* Error msg written here */
);
쿼리 결과 값 종류
const void *sqlite3_column_blob(sqlite3_stmt*, int iCol); // BLOG
double sqlite3_column_double(sqlite3_stmt*, int iCol); // REAL
int sqlite3_column_int(sqlite3_stmt*, int iCol); // 32bit INTEGER
sqlite3_int64 sqlite3_column_int64(sqlite3_stmt*, int iCol); // 32bit INTEGER
const unsigned char *sqlite3_column_text(sqlite3_stmt*, int iCol); // UTF-8 TEXT
const void *sqlite3_column_text16(sqlite3_stmt*, int iCol); // UTF-16 TEXT
sqlite3_value *sqlite3_column_value(sqlite3_stmt*, int iCol); // unprotected sqlite3 value
int sqlite3_column_bytes(sqlite3_stmt*, int iCol); // Size of a BLOB or a UTF-8 TEXT result in bytes
int sqlite3_column_bytes16(sqlite3_stmt*, int iCol); // Size of UTF-16 TEXT in bytes
int sqlite3_column_type(sqlite3_stmt*, int iCol); // Default datetype of the result
Reference
- SQLite: https://www.sqlite.org/docs.html
반응형
'IT > 기타' 카테고리의 다른 글
[Sourcetree] authentication failed 오류 해결 (인증 오류) (4) | 2021.07.06 |
---|---|
[티스토리] 코드블럭 소스코드 한 줄로 나오는 문제 해결 방법 (0) | 2020.11.01 |
[ASCII Table] 아스키코드 표 (0) | 2017.09.13 |
daum 포토업로더 Flash Player 10 최적화 오류 해결법 (0) | 2017.08.30 |
[C] 포인터 개념 (0) | 2017.02.03 |