백인감자
[DB] MySQL C/C++(visual studio 2015) 연동하기 본문
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 우 |
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이름*/, 3306, NULL, 0)) printf("error"); else printf("success"); mysql_close(&mysql); } | cs |
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 *)NULL, 0); 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 을 입력해준다.
위와 같이 설정한 후 다시 실행시키면 정상적으로 동작하는 것을 확인 할 수 있다.
'데이터베이스' 카테고리의 다른 글
[DB/자료구조] B-Tree(B트리), B+ 트리 (6) | 2017.07.08 |
---|---|
[DB] 데이터베이스 복구, ACID (0) | 2016.12.18 |
[DB]3단계 DB시스템 구조, 관계형 데이터베이스 (0) | 2016.09.19 |
[DB] MySQL 기본 (0) | 2016.09.05 |