지속가능티끌/SQL. 데이터베이스

Visual C++. SQLite. table 존재 여부 확인.

i.got.it 2016. 10. 16. 21:47


SQLite 의 master table 인 sqlite_master 에서 테이블 이름으로 select 구문으로 수량을 받아서 0이면 해당 table 없는것, 1이면 해당테이블 있는것.


SQL구문.


예 : 테이블 T_MarketData 이 있는지 확인하려면,


SELECT COUNT(*) FROM sqlite_master WHERE NAME = "T_MarketData"



Visual C++ 코드.


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
27
28
    int retv;
    char * error;
    char ** results; 
    const char * str_sql;
    CString cst_errmsg; 
 
 
    /// T_MarketData 유무 확인. 
    str_sql = "SELECT COUNT(*) FROM sqlite_master WHERE NAME='T_MarketData'";     
    if (sqlite3_get_table(m_pdb, str_sql, &results, NULL, NULL, &error)) // error
    {
        cst_errmsg.Format(_T("%s"), sqlite3_errmsg);
        Display_Status(cst_errmsg);
        sqlite3_free(error);
    }
    else //select 구문 실행은 성공.
    {
        if (atoi(results[1]) != 0) // tabel T_MarketData 있음. index must be 1 not 0. 
        {
            Display_Status(_T("T_MarketData Found"));
        }
        else // table T_MarketData 없음. 
        {
            Display_Status(_T("T_MarketData Not Found"));
        }
    } 
 
 



///1023.