반응형

1. 시험환경

    ˙ Maria DB 10.5.8 (x64) 와 Visual Studio 2017 v141 (x64, Release) 간 연동

    ˙ Maria DB 10.5.8 (x64) 와 Visual Studio 2012 v110 (x64, Release) 간 연동

    ˙ Maria DB 10.5.8 (x64) 와 Visual Studio 2010 v100 (x64, Release) 간 연동
    ˙ Maria DB 10.5.8 (x32) 와 Visual Studio 2010 v100 (x32, Release) 간 연동

 

2. 목적

    ˙ MariaDB와 Visual Studio(C++) 간 연동 설정 및 동작을 확인한다.

    ˙ Visual Studio 버전별 연동 설정 및 동작을 확인한다.

 

3. 적용

    ① Maria DB에 접속하여 시험용 테이블과 데이터를 준비한다.

 

    ② 프로젝트 속성창 <C/C++> → <일반> → <추가 포함 디렉토리>에 "MraiaDB include" 폴더를 추가한다.

        - MariaDB (x64) : C:\Program Files\MariaDB 10.5\include\mysql

        - MariaDB (x32) : C:\Program Files (x86)\MariaDB 10.5\include\mysql

 

    ③ 프로젝트 속성창 <링커> → <일반> → <추가 라이브러리 디렉토리>에 "MraiaDB library" 폴더를 추가한다.

        - MariaDB (x64) : C:\Program Files\MariaDB 10.5\lib

        - MariaDB (x32) : C:\Program Files (x86)\MariaDB 10.5\lib

 

    ④ 프로젝트 속성창 <링커> → <입력> → <추가 종속성>에 "libmariadb.lib" 파일을 추가한다.

 

    ⑤ Visual Studio 프로젝트 폴더에 "libmariadb.dll" 파일을 복사한다.

 

    ⑥ DB에서 데이터 추출을 위한 코드를 작성한다.

mariaDbConnMain.cpp
0.00MB

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
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
#include <iostream>
#include <mysql.h>
 
using namespace std;
 
void main()
{
      MYSQL *conn;
      MYSQL *conn_result;
      unsigned int timeout_sec = 1;
 
      conn = mysql_init(NULL);
      mysql_options(conn, MYSQL_OPT_CONNECT_TIMEOUT, &timeout_sec);
      conn_result = mysql_real_connect(conn, "127.0.0.1""root""1q2w3e""test"3307NULL0);
 
 
      if (NULL == conn_result)
      {
            cout << "DB Connection Fail" << endl;
      }
      else
      {
            cout << "DB Connection Success" << endl;
 
            char query[1024];
            MYSQL_RES *result;
            MYSQL_ROW row;
 
            sprintf_s(query, 1024"SELECT * FROM testTbl");
 
            // Send Query
            if (mysql_query(conn, query))
            {
                cout << "SELECT Fail" << endl;
            }
 
            // Get Response
            result = mysql_store_result(conn);
 
            int fields = mysql_num_fields(result);    // 필드 갯수 구함
 
            while (row = mysql_fetch_row(result))     // 모든 레코드 탐색
            {
                for (int i = 0; i < fields; i++)    // 각각의 레코드에서 모든 필드 값 출력
                {
                    cout << row[i] << "   ";
                }
                cout << endl;
            }
 
            mysql_free_result(result);
            mysql_close(conn);
      }
 
      return;
}
cs

 

4. 결과

    ˙ 프로그램 실행 시 DB 테이블에 저장된 데이터를 정상적으로 가져올 수 있다.

 

    ˙ 여러 버전을 테스트한 결과 동일한 플랫폼 간 연동은 정상 동작 하지만, MariaDB(x32)와 Visual Studio(x64) 간

         또는 그 반대의 연동은 컴파일 시 링크 에러가 발생한다.

    ˙다른 플랫폼 간 연동을 위해서는 DB에서 제공하는 별도의 Connector가 필요하다.

 

 

※ 내용이 도움 되셨다면 광고 클릭 한번 부탁드립니다 ※

반응형

+ Recent posts