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
순으로 코드를 넣어야만 에러없이 컴파일이 가능하다
'Database' 카테고리의 다른 글
[MySQL] 데이터베이스, 테이블 활용 예제 (0) | 2011.06.05 |
---|---|
[MySQL] MySQL 명령어 (0) | 2011.06.05 |
[MySQL] MySQL의 int(n) 형태 데이터의 의미 (0) | 2011.06.05 |
[MySQL] MySQL lib를 리눅스 C에서 사용하기 (0) | 2011.06.03 |
[MySQL] NetBeans와 MySQL 연동 설정 (3) | 2010.12.15 |