SQLite 시작

SQLite는 가볍고 빠른 오픈소스 파일 DB이다.  최근에 아이폰 붐이 일어나서 잠시 아이폰 프로그래밍 책을 살펴 보니 SQLite니 사용되고 있었다.

윈도 CE 모바일에서 단어장을 만들때 사용하면 좋겠다고 생각되어 SQLite를 사용해 보기로 했다.

다운로드:
SQLite 다운로드:  Precompiled Binaries For Windows 항목에서 sqlite-3_6_22.zip을 받는다.
윈압축을 풀면 sqlite3.exe 실행 파일이 있다. 데이터 베이스 실행 파일이다.
http://www.sqlite.org/download.html

CppSQLite :
3.0.8 버전을 다운받아서 Common 폴더만 프로젝트 폴더로 복사한다.
http://www.codeproject.com/database/CppSQLite.asp

<프로젝트 설정>

Common 폴더 복사

소스 추가: Common 폴더의 CppSQLite3.cpp, CppSQLite3.h

라이브러리 추가: sqlite3.lib

DLL 복사: 실행 폴더로 복사

<소스 추가>

파일 DB 사용시
const char* dbfile = "word.db";

메모리 DB 사용시
const char* dbfile = ":memory:";

<SQLite 특정>
-SQLite는 파일하나가 Dtatabase 하니이다. 테이블은 여러개 들어 갈수 있다.
-DB를 오픈할 때 ":memory: "이면 메모리 DB이고 이외에는 파일 DB이다.
-db.execDML에서 리턴되는 값은 영향을 받은 row개수이다.

<SQLite Manager 설치>

FireFox 실행후  https://addons.mozilla.org/en-US/firefox/addon/5817  페이지로 이동하여 SQLite Manager 플러그인을 설치한다.( MS의 인터넷 익스플로어에서는 SQLite Manager 설치도 안되고 실행도 안된다. )
SQLiteManager의 실행은 FireFox의 메뉴-도구-SQLiteManager로 실행한다.

#include <stdio.h>

#include <iostream>

#include "Common/CppSQLite3.h"

 

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

 

void main()

{

#if  1

    //파일 DB 사용시

    const char* dbfile = "customer.db";

#else

    //메모리 DB 사용시

    const char* dbfile = ":memory:";

#endif

 

    int ret = 0;

    CppSQLite3DB    db;

 

    db.open(dbfile);

    // 테이블 생성

    ret = db.execDML(" CREATE TABLE tbl_customer( NumIndex int NOT NULL, Name varchar(32), Age smallint );");

 

    // 데이터 INSERT

    char query[256];

    sprintf_s(query, 256, "INSERT INTO tbl_customer( NumIndex, Name, Age ) Values( 1, 'Kim dong su', 20);" );

    ret = db.execDML(query);

    sprintf_s(query, 256, "INSERT INTO tbl_customer( NumIndex, Name, Age ) Values( 2, 'Kim tea hee', 30);" );

    ret = db.execDML(query);

 

    //데이터 SELECT

    CppSQLite3Query q = db.execQuery("SELECT NumIndex, Name, Age FROM tbl_customer");

    while (!q.eof())

    {

        std::cout << q.fieldValue(0) << " | ";

        std::cout << q.fieldValue(1) << " | ";

        std::cout << q.fieldValue(2) << " | " << std::endl;

        q.nextRow();

    }

 

    db.close();

}

[참고 or 펌]
http://www.jamsun2.com/zbxe/55061
http://alones.kr/tag/sqlite-manager