본문 바로가기
지속가능티끌/SQL. 데이터베이스

Visual C++. SQLite 데이터베이스 활용. DB Open, Table Create. Insert.

by 리치굿맨 2016. 10. 15.


 

개요.

 

Visual C++ 프로젝트에서 SQLite 데이터 베이스 활용법 정리.
예 : VC++ MFC Regular DLL 프로젝트인 CyFinAPI 에서 SQLite3.dll implicit linking 처리하고, CyFinAPI 의 클래스 CCyDevice2_Market_UITDlg 에서 SQLite 데이터베이스 Open, Table Create, 테이블에 데이터 삽입.

기본/연관정보.
1. SQLite 개요, 다운로드 ->  http://igotit.tistory.com/1012
2. DLL implicit linking 방법 -> http://igotit.tistory.com/471
3. Visual Studio 에 SQLite Toolbox 설치 -> http://igotit.tistory.com/1015

일반 참조정보.
 


 

 

 

1. SQLite DLL Linking. 

 

단계1. SQLite 파일 배치.
implicit 링크용 3개 파일 sqlit3.dll, sqlite3.lib, sqlite3.h 중, (3개 파일 확보방법 -> http://igotit.tistory.com/1012 )
sqlite3.dll 은 실행프로그램 있는 동일 경로에 배치한다.
sqlite3.lib, sqlite3.h 파일은 프로젝트 소스에서 접근가능한 곳에 배치한다.

Header_SQLLite(파박) 별도로 만들어 2개의 파일 배치했다.


단계2. SQLite DLL implicit linking.
일반적 방법 :   http://igotit.tistory.com/471  에 따라 코드 추가한다. .

CyFinAPI_Global.h 에 아래 구문 추가.
 #pragma comment(lib,"Header_SQLite\\sqlite3.lib") // SQLite DataBase

소스코드 CyDevice2_Market_UITDlg.cpp  에서 sqlite3.h 인클루드 처리하고,
#include "Header_SQLite\sqlite3.h"

 


 


 

2. SQLite DB Open.

   
데이터베이스 오픈 함수 실행한다.
아래 함수는 CyFinAPI.dll 경로 하위폴더 DataBase 내에 MarketData.db 라는 이름의 데이터베이스를 오픈하는 처리이다.
실행시 MarketData.db  가 없는 경우엔 파일생성되면서 오픈되고 이미 해당파일이 있는 경우엔 Open 처리만 이뤄진다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
/*
반환값. 
1 : 성공. 
-1 : Open DB 실패.
*/
int CCyDevice2_Market_UITDlg::Init_DataBase()
{
    int retv; 
    
    sqlite3* m_pDB; 
 
    CString db_path = gFullPath_CyFinAPIDLL_FOLDER + _T("\\DataBase\\MarketData.db") ;
    retv = sqlite3_open(CW2A(db_path), &m_pDB);// open database
    if (retv) // fail open.
    {
        Display_Status(_T("Fail:Open DataBase MarketData.db "));
        sqlite3_close(m_pDB);
        return -1;
    }
    else // success open.
    {
        Display_Status(_T("Success:Open DataBase MarketData.db "));
        return 1; 
    }
}
 

실행결과.
폴더 DataBase 내에 MarketData.db 파일 만들어지고 Open 성공.

 


 


 

3. SQLite Table Create

 
 
테이블 T_MarketData 생성

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
                /// Create Table. 
            str_sql = "CREATE TABLE [T_MarketData] (   \
                                 [Time_ID] INTEGER \
                                ,[DataType] int \
                                ,CONSTRAINT [PK_T_MarketData] PRIMARY KEY ([Time_ID]) \
                                )";
 
            retv = sqlite3_exec(m_pdb, str_sql, NULL, NULL, &error);
 
            if (retv) // fail crate table
            {
                Display_Status(_T("Fail: Create T_MarketData"));
                sqlite3_free(error);
                return -1;
            }
            else // success create table.
            {
                Display_Status(_T("Success: Create T_MarketData"));
            }
 

 


 

 

4. Insert

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
void CCyDevice2_Market_UITDlg::DBInsert_tMarketData(sqlite3* pdb, uint64_t time_id, int data_type)
{
    char * error; 
 
    CString cst_sql = _T("INSERT INTO [T_MarketData] VALUES( ");
    CString cst_sqlvalues; 
 
    cst_sqlvalues.Format(_T("%lld, %d"), time_id, data_type); // lld for 64bit integer 
    cst_sql.Append(cst_sqlvalues);
    cst_sql.Append(_T(" );"));
 
    if (sqlite3_exec(pdb, CW2A(cst_sql), NULL, NULL, &error)) // error
    {
        Display_Status(_T("Fail:Insert into T_MarketData")); 
        sqlite3_free(error); 
    }
}
 
 
 


 


///1016

태그

댓글0


   
현물 |선물 인버스 |선물 USDT     현물 | 선물 USDT |봇제작툴/카피트레이딩     현물 |선물 인버스 |선물 USDT     선물 인버스 |선물 USDT