본문 바로가기
C++ Programming

[C++] visual studio와 maria db 연동 후 값 읽어오기

by TYB 2023. 10. 25.
반응형

visual studio는 다운로드가 되어있는 상태라고 가정하고 maria db를 설치하겠습니다.

 

 

 

download 눌러서 들어가고

maria db 11.1.2 stable한 버전으로 받아줍니다

계속 쭉쭉 next~

계속 쭉쭉 next~

 

계속 쭉쭉 next~

자 여기 중요한데 user id가 root이고 password를 설정해주는 과정입니다. 

여기서 입력하는 패스워드는 나중에 visual studio cpp파일에서 작성하는 코드 안에도 들어가기 때문에 까먹으면 안됩니다

next누르고 install 해줍니다.

 

maria db가 깔렸다면

이 프로그램을 실행시켜 줍니다.

 

신규버튼을 눌러서

 

 

정보들을 입력해주고 열기버튼을 눌러주면

 

 

db가 열렸습니다.

넣어주고 저장버튼 눌러주면

 

만들어준 test 이름으로 새로운 테이블이 생성된 것을 확인 할 수 있다. 

 

 

쿼리를 눌러 들어간 후 해당 sql문을 입력하고 실행시킨다.(재생버튼 클릭 or F9)

 value 내부의 값을 1로 2번 입력하고 2로 1번 입력해주겠습니다.

입력 후에 SELECT를 통해 잘 삽입되었는지 체크해준다.

======================================maria db 설치===========================================

 

여기까지 완료되었다면 visual studio에서 세팅을 해주어야 한다.

visual studio 키고 속성에 들어가서

 

 

 

 

 

 

 

 

 

libmariadb.dll 파일을 프로젝트 솔루션이 있는 폴더 내부로 복사해줍니다.

만약 안했다면 코드를 실행시킬 때

이런 오류창이 나옵니다.

 

 

거의 다왔습니다...!

이제 아래 cpp 파일을 만들어줍니다.

 

 

 

#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", "비밀번호", "mysql", 3306, NULL, 0);
//비밀번호 바꿔주세요!!

    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 test");//아까전에 만들어줬던 db 내 테이블 이름

        // 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;
}

 

실행결과 값을 잘 불러온 것을 확인할 수 있습니다.

 

 

알아야 할 주요 코드만 살펴보겠습니다.

 

14번 라인  conn_result = mysql_real_connect(conn, "127.0.0.1", "root", "dnckdals1!", "mysql", 3306, NULL, 0);

 

첫번째 인자 conn은 mariadb와의 연결상태,  두번째 인자는 해당 db의 ip주소, 세번째 인자는 mariadb의 id, 네번째 인자는 mariadb의 pw(꼭 변경해주세요!), 다섯번째는 mariadb내에서 접근할 database의 이름, 여섯번째 인자는 해당 db의 port주소  , 일곱번째 인자는 unix_socket, 여덟번째는 client flag

 

  29번 라인         sprintf_s(query, 1024, "SELECT * FROM test");

3번째 인자에 db로 보낼 sql문을 작성하는 것인데 SELECT를 통해 값을 불러올 수도 있고 INSERT를 통해 값을 추가 할 수도 있다.

 

 

 

여기저기 찾아보면서 엄청난 삽질을 하면서 성공했는데 이 글을 보는 여러분들은 한번에 잘 하시길...!

 

 

 

 

아래 링크의 글을 보면서 공부하였습니다.

https://languagestory.tistory.com/5

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

반응형