헬마입니다.

SQLite 를 사용하여 간단하게 DB열고 테이블 생성하여 데이터 삽입, 추출 예제입니다.

컴파일 환경 : Windows  Vista SP2 RC, VS 2008 SP1, NO MFC, Console Project

소스는 매우 간단하게 한쪽밖에 안됩니다.

제가 기존에 작성하여 사용하던 클래스들을 다 끄집어내서 사용하였내요

CSQLiteDB - MS ADO DB 처럼 DB를 생성/관리/실행 합니다.
CSQLiteRecordSet - DB 클래스의 실행결과를 받습니다.
CT2U8 - SQLite 는 내부 데이터를 자동으로 UTF8 로 변환하여 관리하기 떄문에 UTF8 과 다른 인코딩의 변환을 위해 작성하였습니다.

#include "stdafx.h"

#include "CSQLite3.h"

int _tmain(int argc, _TCHAR* argv[])
{
 // sqliteDB 객체 생성
 CSQLiteDB sqliteDB;

 // TEST.DB 파일을 열기 시도, 없으면 생성
 if( sqliteDB.Open( _T("TEST.DB") ) )
 {
  // 테이블 생성
  if( sqliteDB.ExecuteSQL( "CREATE TABLE IF NOT EXISTS TB_LOG ( LOG_SEQ INTEGER PRIMARY KEY AUTOINCREMENT, LOG_CODE INTEGER DEFAULT 0, LOG_DATE DATETIME DEFAULT CURRENT_TIMESTAMP, LOG_TEXT VARCHAR(20) );" ) )
  {
   // 100개의 항목 테이블에 입력
   for ( int nIDX = 0; nIDX < 100; ++nIDX )
   {
    std::string sql;
    sql = format( "insert into TB_LOG ( LOG_CODE, LOG_TEXT ) values ( '%d', '로그 기록 = %d' )", nIDX, nIDX );

    // SQLite 는 DB에 기록할 때 문자열을 UTF8 로 자동으로 변환하여 저장함
    sqliteDB.ExecuteSQL( sql );
   }

   // 테이블에서 select 하여 출력
   CSQLiteRecordSet sqliteRS = sqliteDB.Execute( "select * from TB_LOG order by log_code asc" );
   unsigned int nIDX = 0;
   while( sqliteRS.IsEOF() == false )
   {
    std::string text;
    std::string data;

    // UTF8 로 인코딩된 내용을 MBCS 인코딩으로 변환하여 출력
    CT2U8 utf8;
    utf8.AssignUTF8( sqliteRS.GetColumnValue( "LOG_TEXT" ).c_str() );
    utf8.ConvertUTF8ToCHAR(data);

    text = format( "TABLE NAME = \"TB_LOG\"\t No. = %d\tLOG_CODE=%s\tLOG_TEXT=%s\r\n",
        nIDX++, sqliteRS.GetColumnValue( "LOG_CODE" ).c_str(), data.c_str() );

    printf("%s", text.c_str());

    sqliteRS.MoveNext();
   }
  }
 }
 return 0;
}


 
그나저나 티스토리에서 소스코드 문법 강조는 어떻게 해서 넣는건가요? ㅠㅠ

댓글을 달아 주세요

  1. BlogIcon 상구너(smokingbird) 2009.02.21 13:57 신고 Address Modify/Delete Reply

    티스토리에서 직접 하는방법도 있지만,

    http://codepad.org/

    가서 CTRL + C
    CTRL + V 로 소스를 붙여넣고
    서밋 버튼을 누르면 다음페이지에 출력이 됩니다
    런코드를 체크하시면 컴파일에러도 제공되는듯하구요,
    프라이빗 체크박스는 음,, 뭘까요...