[Linux] C언어로 MySQL연동
옮긴이: Ubuntu가 설치된 EC2에서 잘 되는거 확인했음.
1. mysql.h 위치 찾는 명령어
mysql_config --cflags
2. mysql.h 없을 시 다운
apt-get install libmysqlclient-dev
3. include mysql.h 방법
#include "/usr/include/mysql/mysql.h"
다른곳에서 보면 -l 혹은 -L어쩌구저쩌구로 링크 시키면 된다고 하였지만 아직 제대로 실행 되지 않음.
4. 컴파일 방법
gcc -o sql sql.c -lmysqlclient
5. 코딩-1(접속여부만 확인)
#include <stdio.h>
#include <stdlib.h>
#include "/usr/include/mysql/mysql.h"
MYSQL *conn_ptr;
MYSQL_RES *res_ptr;
MYSQL_ROW sqlrow;
int db_init() {
conn_ptr = mysql_init(NULL);
if(!conn_ptr) {
printf("error");
exit(0);
}
else {
printf("debug1\n");
}
conn_ptr = mysql_real_connect(conn_ptr,"localhost","root","암호","mysql",0,NULL,0);
if(conn_ptr) {
printf("sucess\n");
}
else {
printf("connect error!\n");
}
mysql_close(conn_ptr);
return 0;
}
int main(int argc, char **argv) {
printf("main!~~\n");
int temp = db_init();
return 0;
}
5. 코딩-2 (원래 있던 소스)
void main(){
MYSQL *conn;
MYSQL_RES *res;
MYSQL_ROW row;
char *server = "localhost"; //혹은 ip
char *user = 유저아이디;
char *password = 비번;
char *database = 디비이름;
if( !(conn = mysql_init((MYSQL*)NULL))){ //초기화 함수
printf("init fail\n");
exit(1);
}
printf("mysql_init sucsess.\n");
if(!mysql_real_connect(conn, server, user, password, NULL, 3306, NULL, 0)){
printf("connect error.\n"); //DB접속 (MYSQL*, host, id, pw, null, port, 0)
exit(1);
}
printf("mysql_real_connect suc.\n");
if(mysql_select_db(conn, database) != 0){
mysql_close(conn);
printf("select_db fail.\n");
exit(1);
}
printf("select mydb suc.\n");
//printf("%d", mysql_query(conn,"select * from testtab" )); //성공시 0리턴 (false)
if(mysql_query(conn,"select * from testtab" )){
printf("query fail\n");
exit(1);
}
printf("query sucsess\n");
res = mysql_store_result(conn); //쿼리에 대한 결과를 row에 저장
printf("res suceese\n");
while( (row=mysql_fetch_row(res))!=NULL){
printf("%s %s\n", row[0], row[1]); //이전과 같이 디비테이블을 만들었다면 id와 패스워드값이 나온다.
}
mysql_close(conn);
}
참고 : http://shings47.tistory.com/516
'C/C++' 카테고리의 다른 글
boost VC++ 2008, 2013 환경설정 (0) | 2015.05.13 |
---|---|
Boost.asio 자료 (0) | 2015.05.13 |
[c, c++]extern "C" 에 관하여... (0) | 2014.07.23 |
[OpenGL] Blending 투명하게 하기 (0) | 2014.04.09 |
libpng 매뉴얼 (0) | 2014.04.09 |