Visual C++ 2005 에서 간단하게 SQLite Database 사용하기


우선 SQLite 사이트에서 윈도우용 DLL 파일과 소스 파일을 다운 받는다.

SQLite 3.6.0 Source 
SQLite 3.6.0 DLL    

다운로드 받은 파일들을 프로젝트의 임의의 폴더에 풀어 놓는다.

압축을 풀어놓은 파일들

압축을 풀어놓은 파일들

시작 메뉴의 “Visual Studio 2005 명령 프롬프트 열기”를 실행하여 도스프롬프트창을 열고 다운로드 받아서 압축을 풀어놓은 폴더로 이동하여 다음 명령을 수행하여 프로젝트에 사용할 .lib파일을 생성한다.

>LIB /DEF:sqlite3.def /MACHINE:x86

Library 생성 화면

Library 생성 화면

작업 후 파일 목록

작업 후 파일 목록


로젝트 속성페이지의 C/C++ 항목의 추가 포함디렉토리와 링커 함목의 추가 라이브러리 디렉토리에 위에서 작업한 디렉토리의 경로를
입력해 주고 링커 함목의 추가 종속성에 위에서 만들어진 Library 파일인 sqlite3.lib 를 추가해 주면 프로젝트
설정은 끝이다.

이제 SQLite 에 접속하여 작업을 할 클래스 헤더파일에 “sqlite3.h” 파일을 포함시키고 callback 함수를 선언해 준다.

SQLite3 에서 질의를 하면 리턴받을 데이터가 있을경우 callback 함수를 호출하여 데이터를 넘겨주기때문에 callback 함수를 작성해 주어야 한다.

01 #include "sqlite3.h"
02  
03 static int callback(void *NotUsed, int argc, char **argv, char **azColName)
04 {
05     int i;
06     for( i = 0; i < argc; i++)
07     {
08         TRACE("%s = %s\n", azColName[i], argv[i] ? argv[i] : "NULL");
09     }
10     printf("\n");
11     return 0;
12 };

그리고 소스 파일에서 작업을 하면 된다.

01 sqlite3 *pSQLite3 = NULL; // SQLite DB 객체 저장 변수
02 char    *szErrMsg = NULL; // Error 발생시 메세지를 저장하는 변수
03  
04 // 데이터베이스 열기 : 파일이 존재하지 않으면 생성한다.
05 int rst = sqlite3_open( "test.db", &pSQLite3);
06  
07 if ( rst )
08 {
09     TRACE( "Can't open database: %s\n", sqlite3_errmsg( pSQLite3 ));
10  
11     sqlite3_close( pSQLite3 );
12     pSQLite3 = NULL;
13 }
14 else
15 {
16     TRACE("Database opened!!\n");
17  
18     // 테이블 생성
19     rst = sqlite3_exec(pSQLite3,
20         "CREATE TABLE member ( name TEXT(20), age INTEGER )",
21         callback, 0, &szErrMsg);
22  
23     // 데이터 삽입
24     rst = sqlite3_exec(pSQLite3,
25         "INSERT INTO member ( name, age ) values ( 'andy', 20 )",
26         callback, 0, &szErrMsg);
27  
28     // 데이터 질의
29     rst = sqlite3_exec(pSQLite3,
30         "SELECT * FROM member",
31         callback, 0, &szErrMsg);
32 }
33  
34 //객체 해제
35 sqlite3_free( szErrMsg );
36 sqlite3_close( pSQLite3 );

위 코드를 수행한 후의 출력창

출력창 내용

출력창 내용

데모 프로젝트


답글 남기기

이메일 주소는 공개되지 않습니다.