본문 바로가기
C++ Programming

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

by TYB 2023. 10. 25.
반응형

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

 
download 눌러서 들어가고

maria db 11.1.2 stable한 버전으로 받아줍니다
버전은 변경 될 수도 있으니 뒤에 alpha, rc같은게 안붙은 버전 받아주시면 됩니다

계속 쭉쭉 next~

계속 쭉쭉 next~
 

계속 쭉쭉 next~

자 여기 중요한데 user id가 root이고 password를 설정해주는 과정입니다. 
여기서 입력하는 패스워드는 나중에 visual studio cpp파일에서 작성하는 코드 안에도 들어가기 때문에 까먹으면 안됩니다

next누르고 install 해줍니다.
 
maria db가 깔렸다면

이 프로그램을 실행시켜 줍니다.(관리자 권한으로 안하면 안되는 pc들도 있다고 피드백 받음)

 
신규버튼을 눌러서
 

 
정보들을 입력해주고 열기버튼을 눌러주면(관리자 권한으로 안하면 안되는 pc들도 있다고 피드백 받음)
 

 
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
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

반응형