Library2012. 9. 28. 09:30

응용프로그램에서 데이타베이스를 인베디드 시키려면 DB 를 동작할수 잇게 해주는 라이브러리가 필요하다.

 

크게 두가 지가 제일 유명한 것 같다.

 

구글의 LevelDB 와 SQLite 이다.

 

LevelDB 는 key-Value 방식으로 사용된다 NoSQL 이다.

 

나는 SQL 이 필요하기 때문에 SQLite 를 사용하기로 했다.

 

SQLite 를 응용프로그램에 인베디드 시키는 방법을 소개한다.

 

 

 

1, 먼저 SQLLite 라이브러리를 다운로드 받는다. 다운로드

    sqlite-amalgamation 를 다운받고 압축을 푼다.

 

2, 압축을 풀면 *.lib 파일이 없다 *.def 파일을 이용해서 *.lib 파일을 만든다.

 

  정상적으로 실행 됐따면 sqllite3.lib, sqllite.exe 가 생성 되었을 것이다.

 

  % 수행중에 "mspdb80.dll" 를 찾을 수 없다는 메시지가 나온다면 환경변수 "path" 에

      "C:\Program Files (x86)\Microsoft Visual Studio 8\Common7\IDE" 경로를 추가하면 된다.

 

3, 이제 생성된 라이브러리를 사용 합니다.

 

 

 

typedef int SQLITE_RESULT;

#include "SQLLite/sqlite3.h"

#pragma comment(lib, "sqllite/sqlite3.lib")

int _tmain(int argc, _TCHAR* argv[])
{
	sqlite3 *db = NULL;

	SQLITE_RESULT sr = sqlite3_open_v2(":memory:", &db, SQLITE_OPEN_READWRITE | SQLITE_OPEN_CREATE, NULL);
	
	if(sr != SQLITE_OK)
	{
		printf("open fail (%s)", sqlite3_errmsg(db));
		return 0;
	}

	char* err_msg		= NULL;
	sqlite3_stmt *stmt	= NULL;

	const char* const query_table  = "CREATE TABLE TEST (test_column INTEGER)";
	const char* const query_insert = "INSERT INTO TEST VALUES (99)";	
	const char* const query_select = "SELECT * FROM TEST";

	sr = sqlite3_exec(db, query_table,  NULL, 0, &err_msg);
	sr = sqlite3_exec(db, query_insert, NULL, 0, &err_msg);

	sr = sqlite3_prepare(db, query_select, strlen(query_select), &stmt, NULL);

	while ( sqlite3_step(stmt) == SQLITE_ROW )
	{
		printf("test_cloum: %d\n", (int)sqlite3_column_int(stmt, 0));
	}

	sqlite3_finalize(stmt);
	sqlite3_free(err_msg);
	sqlite3_close(db);
	
	return 0;
}

Posted by 상현달