본문 바로가기
C/C++

[Linux] C언어로 MySQL연동

by CodeDiver 2014. 11. 21.


[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