IT/기타

[SQLite] SQLite 주요 API

안경 쓴 귀니 2022. 6. 16. 01:25
반응형

 

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

 

반응형