ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [MFC]SQLite 환경설정 및 DB 컨트롤
    💻 프로그래밍/C, C++ 2017. 11. 11. 02:00

    안녕하세요! JAY 입니다!! 벌써 가을이 지나고 겨울이 다가왔네요 ㅜㅜ


    요새 기온이 오락가락해서 감기걸리기 쉬운데 감기 조심하세요~~


    이번 포스팅에서는 MFC에서 SQLite3를 사용한 DB다루기를 해보겠습니다.



    1. SQLite 및 SQLite Wrapper,  다운


    먼저,  MFC에서 SQLite3를 사용하기 위해서는 몇가지 준비가 필요합니다.

    첫번째로, SQLite를 다운로드 합니다.  아래 링크에 들어가 자신의 환경에 맡는 SQLite를 다운로드 합니다.

    압축파일을 풀면 sqlite3.dll 파일이 있습니다. 이 파일을 Release, Debug 폴더에 복사합니다.

    추가로 SQLite 라이브러리를 추가해줘야 하는데, 저는 이미 만들어져 있는 걸 사용하였습니다.

    SQLite 라이브러리를 만드는 방법은 아래 링크를 참고하시면 될 것 같습니다.(SQLite 라이브러리 첨부파일로 추가했습니다.)

    다운로드 하거나 직접 만든 sqlite3.lib를 프로젝트 속성 -> 링커 -> 입력 -> 추가종속성 에 추가해줍니다.



    SQLite 라이브러리, 헤더파일 : sqlite3.libsqlite3.h

    SQLite 라이브러리 만드는방법 : http://six605.tistory.com/299

    SQLite 다운로드 링크 : http://www.sqlite.org/download.html


    두번째로, SQLite를 사용하기 위한 Wrapper를 다운합니다. SQLite를 사용하기 위한 Wrapper로 CppSQLite를 많이 사용하며,  아래 링크에서 CppSQLite3U.zip 을 다운받은 뒤,  압축을 풀면 CppSQLite3U.h, CppSQLite3U.cpp 가 나옵니다. 이 두파일과 sqlite3.h 를 프로젝트의 common폴더에 복사한 뒤, 프로젝트에서 소스파일과, 헤더파일로 추가해줍니다.


    CppSQLite3U 다운로드 링크 : http://softvoile.com/development/CppSQLite3U/


    마지막으로, 프로젝트에  CppSQLite3U.h 를 include하면 준비는 끝이납니다.


    2. DB의 내용 ListBox에 출력하기


    scanDB라는 함수로 DB의 내용을 읽은 뒤 ListBox에 출력해 보도록 하겠습니다.

    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
    29
    30
    31
    32
    // DB에서 데이터를 읽어서 리스트에 뿌려줌(더해줌)
    void CsqliteTestDlg::scanDB()
    {
        CString sTmp;
        CListBox* pListPage;
     
        // DB 생성
        CppSQLite3DB db;
     
        try {
            // DB가 있는 경로에서 DB를 open
            db.open(_T("test.db"));
            
            // SQL 쿼리를 날려, 출력할 테이블의 컬럼을 정안다
            sTmp.Format(_T("select name, region from customer;"));
            CppSQLite3Query q = db.execQuery(sTmp);
            
            // 컬럼이 없을때까지 출력
            while (!q.eof()) {    
                CString nIdx = q.getStringField(0);    
                sTmp.Format(_T("%s"), nIdx);
                // ListBox 변수에 DB값 추가
                viewDB.AddString(sTmp);
                q.nextRow();
            }        
        } catch (CppSQLite3Exception &e) {
            viewDB.AddString(_T("에러"));
        }
     
        // db종료
        db.close();
    }

    (test.db의 customer 테이블에 있는 컬럼들의 내용)


    (출력결과)


    오늘 포스팅에서는 MFC에서 SQLite를 사용해 DB의 내용을 읽어봤는데요. SQL 쿼리 관련 내용은 여러분께서 한번 찾아보시길 바랍니다. 

    이상으로 오늘의 포스팅을 마치겠습니다. 즐거운 코딩하세요!!:D


    전체 소스코드 : https://github.com/JAY-Chan9yu/StudyProgramming/tree/master/SQLite3%20%EA%B8%B0%EB%B3%B8%20%EC%82%AC%EC%9A%A9/sqliteTest

    댓글

운동하는 개발자 JAY-JI