본문 바로가기

Database

[MySQL] MySQL의 Lib 사용법

반응형

0. MySQL Server 시작, 정지, 상태 보기, 콘솔 모드 실행 명령어

sudo /etc/init.d/mysql start
 sudo /etc/init.d/mysql stop
 service mysql status
 mysql -u root -p


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. 코딩

#include <stdio.h>
#include <stdlib.h>
#include </usr/include/mysql/mysql.h>
int main(){
        MYSQL *conn;
        MYSQL_RES *res;
        MYSQL_ROW row;

        char *server = "localhost";                            //혹은 ip
        char *user = "유저 ID";
        char *password = "유저 PW";
        char *database = "person";

        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리턴 (

if(mysql_query(conn,"select * from 테이블명" )){  // 테이블명을 테이블에 맞게 변경

                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 %s %s %s %s\n", row[0], row[1], row[2], row[3], row[4], row[5]);       //이전과 같이 디비테이블을 만들었다면 id와 패스워드값이 나온다.
        }

        mysql_close(conn);
 return 0;
}
-----------------------------------------------------------------
위의 소스를 테스트 하기 위한 조건


데이터베이스명은 person
테이블명은 score
아래 그림은 자료형태와 저장된 자료값이다.


위 그림처럼 작성하기 위해선

create database person;

create table score(
id int(3) not null primary key, // id 이름에 int(3) 형식으로 primary key 줌
korean int(3) not null, // primary key를 가지면 중복되지 않게된다
english int(3) not null, // 만약에 id에 2 값 넣고 나중에 다시 2를 넣으려면 에러발생
math int(3) not null,
total int(3) not null,
avg int(3) not null
);



(참조) : http://shings47.tistory.com/516




------------------------------------------------------------
다른 컴파일 방법
gcc test.c -I/usr/include/mysql -lmysqlclient
gcc test.c -I/usr/include/mysql -L/usr/lib/mysql -lmysqlclient
------------------------------------------------------------

mysql.h
my_global.h

컴파일시 에러가 난다. #include는 순서를 가리므로
my_global.h
mysql.h
순으로 코드를 넣어야만 에러없이 컴파일이 가능하다

반응형