Mysql C연동

­Valentine·2021년 3월 27일
0

Project

목록 보기
2/7
  1. c 코드에 include 추가하여 연동

    #include "mysql.h"  //<>로 해도 되고 "mysql.h"로 해도 되더군요.   
      
    main() {   
      
       MYSQL *conn; //mysql과의 커넥션을 잡는데 지속적으로 사용되는 변수에요.   
       MYSQL_RES *res;  //쿼리문에 대한 result값을 받는 위치변수에요.   
       MYSQL_ROW row;   //쿼리문에 대한 실제 데이터값이 들어있는 변수에요.   
      
       char *server = "localhost";  //서버의 경로인데요 localhost로 하면 자기 컴퓨터란 의미랍니다.   
       char *user = "root"; //mysql로그인 아이디인데요. 기본적으로 별다른 설정이 없으면 root에요   
       char *password = "패스워드를 넣어주세요"; /* set me first */   //password를 넣는부분이에요   
       char *database = "데이터베이스 이름을넣어주세요";  //Database 이름을 넣어주는 부분이에요.   
      
       conn = mysql_init(NULL); //connection 변수를 초기화 시켜요.   
      
       /* Connect to database *///DB없이 MYSQL만 접속시킬꺼에요   
       if (!mysql_real_connect(conn, server,    //mysql_real_connect()함수가 연결을 시켜주는 함수에요   
             user, password, NULL, 0, NULL, 0)) {   
          fprintf(stderr, "%s\n", mysql_error(conn));   
          exit(1);   
       }   
      
       res = mysql_use_result(conn);    //접속한 결과값은 res에 넣는건데요. 딱히 지금은 안해도 상관없어요.   
      
        mysql_query(conn, "create database 데이터베이스이름 DEFAULT CHARACTER SET euckr DEFAULT COLLATE euckr_korean_ci;");   
        //mysql_query()는 제 두번째 글 step by step으로 따라했던 부분에 보시면 mysql에서 직접 입력했던 부분을 그대로   
        //옮겨온 것을 볼 수 있는데요. 즉 이 값을 C에서 직접 mysql로 쳐준다고 생각하시면 되요.   
      
       /* Connect to database *///MYSQL에 생성된 DB에 접속   
       if (!mysql_real_connect(conn, server,   
             user, password, database, 0, NULL, 0)) {   
          fprintf(stderr, "%s\n", mysql_error(conn));   
          exit(1);   
       }   
    }
    • 연동이 되지 않아 다른 방법을 시도해 보았다.
  2. 설정 수정하여 연동
    - 아래 링크에서 Boost를 다운받고 install한다.
    - https://www.boost.org/doc/libs/1_72_0/more/getting_started/windows.html
    - 고급설정에 들어가서 환경변수를 수정해준다.

    - visual studio 2019 설정 변경
    - c/c++ →일반→ 추가 포함 디렉터리에 boost와 mysql을 추가해준다.

    - 링커→일반→추가 라이브러리 디렉터리에서 마찬가지로 boost와 mysql을 추가해준다.

    - 링커→입력→추가종속성에서 mysqlcppconn.lib를 추가해준다.
    - 아래 4개의 파일을 c 프로젝트 파일에 복사한다.

    - 다음 코드를 실행시킨다.

    ```c
    #include <stdlib.h>
    #include <iostream>
    
    #include <jdbc/cppconn/driver.h>
    #include <jdbc/cppconn/exception.h>
    #include <jdbc/cppconn/resultset.h>
    #include <jdbc/cppconn/statement.h>
    
    using namespace std;
    
    int main(void)
    {
    	sql::Driver* driver;
    	sql::Connection* con;
    
    	driver = get_driver_instance();
    	con = driver->connect("tcp://127.0.0.1:3306", "your_id", "your_password");
    	con->setSchema("sampledatabase");
    
    	delete con;
    
    	cout << endl;
    
    	return EXIT_SUCCESS;
    }
    ```
    
    - 이또한 연동이 되지 않아 다른 방법을 시도해 보았다.
  3. 참조 추가하여 연동

    • 참조 창을 열어 mysql.data를 체크한다.

    • 연동에 실패하였다.
  4. 결론

    • visual studio2019와 mysql 8.x를 사용하는 다른 사람이 필자와 같은 시행착오를 겪은 후 내린 결론은 mysql의 버전이 5에서 8이 될때 빠진 파일이 많아서 이전에 연동했던 방식으로는 연동이 되지 않으며 c와 연동시키기 어려울 것 같다는 것이다. 그 사람은 이를 해결하기 위해서는 mysql의 버전을 다운시키는 방법을 사용하였는데 필자는 다른 언어(java)를 채택하여 연동하는 방식을 택하였다.
  5. 참조 블로그

profile
천체관측이 취미

0개의 댓글