๋ผ์ด๋ธ๋ฌ๋ฆฌ ๋ฐ ํค๋ํ์ผ ๋ณด๊ธฐ
mysql_config --libs
include์ ํค๋ ํ์ผ๋ค, ์ปดํ์ผ๋ฌ ํ๋๊ทธ ๋ฐ ์ ์๊ฐ ํ์ธ
mysql_config --cflags
C ์ปดํ์ผํ๊ธฐ ์ํด ํค๋ ์ง์
gcc dbconn.c โo dbconn $(mysql_config โ-cflags) $(mysql_config --libs)
์ ์์ ์ํ ์ ๋ณด ์ฝ๋
#include<stdio.h> #include<errno.h> #include<mysql.h> #include<stdlib.h> int main() { //MYSQL ๋ณ์ ์์ฑ MYSQL mysql; //MYSQL ๋ณ์ ์ด๊ธฐํ mysql_init(&mysql); //MYSQL์ ์ ์: ์ฑ๊ณตํ๋ฉด 1 ๋ฆฌํด, ์คํจํ๋ฉด 0 ๋ฆฌํด if(!mysql_real_connect(&mysql,"localhost", user, password, dbname, 0, NULL, 0)) //user, password, dbname์ ์ฌ์ฉํ ๊ฒ { fprintf(stderr,"%s\n",mysql_error(&mysql)); //์ ์ ์คํจ ์ ํ์ค ์๋ฌ ์ถ๋ ฅ exit(1); } printf("connect success!!!\n"); mysql_close(&mysql); return 0; }
MySQL C API
์๋ฃํ
MYSQL: ๋ฐ์ดํฐ๋ฒ ์ด์ค์์ ์ฐ๊ฒฐ์ ๊ด๋ฆฌํ๋ ๊ตฌ์กฐ์ฒด
MYSQL_RES: ์ฟผ๋ฆฌ์ ๊ฒฐ๊ณผ๋ฅผ ๋ํ๋ด๋ ์๋ฃํ
MYSQL_ROW: MYSQL_RES์์ ํ๋์ ๋ ์ฝ๋์ฉ ๊ฐ์ ์ป์ด ์ฌ๋ ์ฐ์ด๋ ์๋ฃํ
MYSQL_FIELD: ํ๋์ ์ด๋ฆ๊ณผ ํ๋์ ํ์ ๋ฑ ํ๋์ ๊ดํ ์ ๋ณด๋ฅผ ์ ์ฅํ๋ ์๋ฃํ
๋ฐ์ดํฐ๋ฒ ์ด์ค ์ฐ๊ฒฐ
MYSQL * mysql_init(MYSQL *mysql) //MYSQL ๊ฐ์ฒด๋ฅผ ์ด๊ธฐํ void mysql_close(MYSQL *mysql) //๋ฐ์ดํฐ์ ์ฐ๊ฒฐ ๋๊ธฐ //์ฟผ๋ฆฌ ์คํ void mysql_close(MYSQL *mysql) //NULL ์ ๊น์ง ๊ฐ์ ธ์ด int mysql_real_query(MYSQL *mysql, const char * query, unsigned int length) //๊ธธ์ด ์ง์ ํด ์ ํํ๊ฒ ๊ทธ ๊ฐ๋ง ๊ฐ์ ธ์ค๊ธฐ //๊ฒฐ๊ณผ ๊ฐ์ ธ์ค๊ธฐ MYSQL_RES * mysql_store_result(MYSQL *mysql) //ํ๋ฒ์ ์ ์ฒด row ๊ฐ์ ธ์ด MYSQL_RES * mysql_use_result(MYSQL *mysql) //ํ๋ฒ์ ํ row ๊ฐ์ ธ์ด MYSQL_ROW mysql_fetch_row(MYSQL_RES * result) //ํ ๊ฐ์ row ๊ฐ์ ธ์ด
์ฟผ๋ฆฌ ์ ๋ฐ์์ค๊ธฐ
๊ธฐ๋ณธ ๋ฉ์ธ์ผ๋ก์ ์์๊ณ ๋์ค์ ๋ค ํจ์๋ก ๋นผ์ ํ๋ ๊ฒ ์ข๋ค.
#include<stdio.h> #include<stdlib.h> #include<mysql.h> #include<errno.h> int main() { MYSQL mysql; MYSQL_RES *res; MYSQL_ROW row; int fields,i; //์ด๊ธฐํ mysql_init(&mysql); //๋ก๊ทธ์ธ if(!mysql_real_connect(&mysql, "localhost", ์ฌ์ฉ์, ๋น๋ฐ๋ฒํธ, db์ด๋ฆ, 0, NULL, 0)) { fprintf(stderr,"%s\n",mysql_error(&mysql)); exit(1); } //db ์ ์ if(mysql_query(&mysql,"use ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ช
")) { fprintf(stderr,"%s\n",mysql_error(&mysql)); exit(1); } //๋ช
๋ น if(mysql_query(&mysql,"๋ช
๋ น")) //์: select * from book { fprintf(stderr,"%s\n",mysql_error(&mysql)); exit(1); } res = mysql_store_result(&mysql); //์ ์ฒด ๊ฒฐ๊ณผ ์ ์ฅ fields = mysql_num_fields(res); //ํ๋ ๊ฐ์ ์ ์ฅ while(row = mysql_fetch_row(res)) //๊ฒฐ๊ณผ์์ ํ ํ์ฉ ๊ฐ์ ธ์์ ํ๋ ๋จ์๋ก ์ถ๋ ฅ { for(i=0; i<fields; i++) printf("%10s\t",row[i]); printf("\n"); } mysql_free_result(res); //ํฌ์ธํฐ๊ฐ ๊ฐ๋ฆฌํจ ๊ฒฐ๊ณผ ํด์ mysql_close(&mysql); return 0; }