백인감자

[DB] MySQL C/C++(visual studio 2015) 연동하기 본문

데이터베이스

[DB] MySQL C/C++(visual studio 2015) 연동하기

백인감자 2016. 9. 30. 19:21

MySQL 과 visual studio 2015 가  둘 다 설치되어있는 가정하에 이루어진 설명이다.

작성 게시글 기준의 환경은 Windows7 64bit 이다.

MySQL 버전 : 5.7 




++)17.05.17 추가내용 

최근에 네이버 지식인에 이 포스팅에 대한 에러를 묻는 글이 있어서 해당 답변글을 보고 추가했습니다.


time.h 에 대한 액세스가 거부된다는 오류가 발생할 경우

http://2sang.tistory.com/110  -->이 블로그에서 설명하는 절차대로 설정하면 정상적으로 동작이 됩니다.






환경구축


MySQL 설치 사용

1. dev.mysql.com

2. downloads ->MySQL Community Edition ->MySQL Community Server 선택

3. MySQL Installer 5.7 for windows: Windows(x86, 32-bit), MySQL Installer MSI download 선택

- 64-bit도 지원함

- MySQL Installer 5.7.14: Select windows: Windows -> Windows(x86, 32-bit), MSI Installer download 선택

4. Begin Your Download - mysql-installer-community-5.7.14.0.msi

- login, sign up 무시하고

- No thanks, just start my download. 선택하여 download 시작






1. 보통의 C++ 프로젝트를 생성하는 것과 동일하게 프로젝트를 생성한다.







***64비트 경우에는 이 설정 꼭 해줘야한다.


여기를 x64 로 설정해줘야 한다. 32비트 의 경우에는 별도로 설정할 필요가 없다.


2. 프로젝트 속성 에서 설정해준다.


2-1. 포함 디렉터리에 C:\ProgramFiles\MySQL\MySQL Server 5.7\include 를 추가한다.








2-2. 라이브러리 디렉터리 에 C:\ProgramFiles\MySQL\MySQL Server 5.7\lib 추가










2-3. 링커 편집


2-4. libmysql.dll 복사



2-5. libmysql.dll 파일을 프로젝트 폴더에 붙여넣기






3. 소스코드 실행


1
2
3
4
5
6
7
8
#include <my_global.h>
#include <winsock2.h>
#include <mysql.h>
#pragma comment(lib, "libmysql.lib")
void main()
{
printf("MySQL client Version : %s)n", mysql_get_client_info());
}
cs



위와 같은 소스코드를 컴파일 시키면 에러가 발생할것이다.


오류코드 C2011을 Double Click하여 해당 헤더파일 소스코드로 이동(my_global.h)


Timespec 구조체 우클릭하여 정의로 이동(G)을 선택


Console 창 아랫줄 ~time.h로 클릭하여 이동



timespec 구조체 부분을 주석 처리 한 후 컴파일




이제 코드를 통해 서버에 접속해보자.
1
2
3
4
5
6
7
8
9
10
void main() {
    //printf("MySQL version: %s\n", mysql_get_client_info());MYSQL
    MYSQL mysql;
    mysql_init(&mysql);
    if (!mysql_real_connect(&mysql, NULL/*host주소(ip)*/"root""비밀번호"NULL/*DB이름*/3306NULL0))
        printf("error");
    else printf("success");
    mysql_close(&mysql);
 
}
cs


보통의 경우 mysql 계정은 기본으로 id가 root 이고 비밀번호는 본인이 처음 설치했을때 설정했을것이기 때문에
자신의 비밀번호를 입력하면 된다. 정상적으로 연결되었으면 success 메시지가 출력된다.

MySQL C/C++(visual studio 2015) 연동이 끝나면 아래와 같은 esql 프로그래밍을 위한 설정을 마저 해준다.


esql 예제

mysql 에서 login 이라는 테이블을 만든 후 

아래와 같은 예제코드를 작성한다.

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
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
#include <my_global.h>
#include <mysql.h>
#include<iostream>
#pragma comment(lib,"libmySQL.lib")
#define DB_HOST "127.0.0.1"
#define DB_USER "root"
#define DB_PASS "your pw"
#define DB_NAME "test"
#define CHOP(x) x[strlen(x) - 1= ' '
 
int main(void)
{
    MYSQL       *connection = NULL, conn;
    MYSQL_RES   *sql_result;
    MYSQL_ROW   sql_row;
    int       query_stat;
 
    char name[12];
    char address[80];
    char tel[12];
    char query[255];
 
    mysql_init(&conn);
 
    connection = mysql_real_connect(&conn, DB_HOST,
        DB_USER, DB_PASS,
        DB_NAME, 3306,
        (char *)NULL0);
 
    if (connection == NULL)
    {
        fprintf(stderr, "Mysql connection error : %s", mysql_error(&conn));
        return 1;
    }
 
    query_stat = mysql_query(connection, "select * from login");
    if (query_stat != 0)
    {
        fprintf(stderr, "Mysql query error : %s", mysql_error(&conn));
        return 1;
    }
 
    sql_result = mysql_store_result(connection);
 
    printf("ID 비밀번호\n");
    while ((sql_row = mysql_fetch_row(sql_result)) != NULL)
    {
        printf("%s %s \n", sql_row[0], sql_row[1]);
    }
 
    mysql_free_result(sql_result);
 
    printf("Insert Value \n");
    printf("이름 :");
    fgets(name, 12, stdin);
    CHOP(name);
 
    printf("비밀번호 :");
    fgets(address, 80, stdin);
    CHOP(address);
 
 
    sprintf(query, "insert into login values "
        "('%s', '%s')",
        name, address);
 
    query_stat = mysql_query(connection, query);
    if (query_stat != 0)
    {
        fprintf(stderr, "Mysql query error : %s", mysql_error(&conn));
        return 1;
    }
 
    mysql_close(connection);
}
 
cs


실행시켜보면 sprintf 오류가 뜰것인데  아래와 같이 _CRT_SECURE_NO_WARNINGS  을 입력해준다.



위와 같이 설정한 후 다시 실행시키면 정상적으로 동작하는 것을 확인 할 수 있다.


21 Comments
댓글쓰기 폼