Mysql 이 PHP 와 함께 웹에서 사용하는게 가장 일반적인 용도이긴 하지만, 많은 경우 시스템레벨에서 직접 다루어야 하는경우도 생긴다. 이러한 경우를 위해서 mysql 은 Perl, Python, C, C++ 등 다양한 API를 제공하는데, 우선 C를 이용한 접근에 대해서 알아보도록 하겠다. (나중에 시간이 허락하면 C++ 을 이용한 mysql 접근에 대해서도 알아보도록 하겠습니다) 설명에 들어감에 앞서 이문는 여러분이 SQL과 RDBMS에 대한 개념과, mysql 의 설치 및 운영에 관련된 기본 사항은 알고 있다는 가정하에 쓰여졌으며, 설명을 위해 쓰인 코드들은 기능과 효율성에 염두를 둔 코드가 아닌 순수 스터디용 (돌아만가는)코드 임을 공지합니다. mysql과 SQL 에 대한 상세한 내용은 관련 서적이나
코드를 테스트 하기 전에 우선 여러분의 시스템에 mysql client 가 설치되어 있는지 확인을 해보바란다. 필자의 경우 mysql-3.23.46 이 설치되어 있으며, 인클루드 파일은 /usr/local/include/mysql 에 라이브러리 파일은 /usr/local/lib/mysql 설치되어 있다. 요즘 왠만한 Linux 배포판은 기본으로 mysql 이 설치되어 있으니, 위의 인클루드와, 라이브러리 경로가 어디에 있는지 확인만 하면 될것이다.
그럼 테스트를 위한 테이블을 만들고 테이블에 간단한 내용을 입력해보자, 테이블이 위치할 DB 는 test 이고 테이블의 이름은 address 이다.
CREATE TABLE address ( name varchar(25) default NULL, address text, tel varchar(25) default NULL ); |
이제 테스트를 위해서 2개 정도의 data 를 입력하도록 하자.
INSERT INTO address VALUES ('홍길동','경기도 연천 연천아파트','02-500-5000'); INSERT INTO address VALUES ('아무개','광주광역시 서구 현대 아파트','015-000-1111'); |
예제 : mysql_test.c
#include <mysql.h>
char name[12]; connection = mysql_real_connect(&conn, DB_HOST, if (connection == NULL) query_stat = mysql_query(connection, "select * from address"); mysql_free_result(sql_result); printf("이름 :"); printf("주소 :"); printf("전화 :"); sprintf(query, "insert into address values " query_stat = mysql_query(connection, query); mysql_close(connection); |
MYSQL | 데이타 베이스에 연결했을때, 이 연결을 다루기 위해 사용되는 구조체 이다 |
MYSQL_RES | (SELECT, SHOW, DESCRIBE, EXPLAIN)등의 쿼리를 내렸을때 그 결과를 다루기 위해 사용되는 구조체이다. |
MYSQL_ROW | 이것은 데이타의 하나의 row 값을 가리킨다. 만약 row 값이 없다면 null 을 가르키게 된다. |
MYSQL_FIELD | 이 구조체는 각 필드의 정보를 가지고 있다. 여기에는 필드의 이름, 타입, 크기 등의 정보를 가지게 된다. mysql 에서 DESC 쿼리를 내렸을때의 정보를 가지고 있다고 보면된다. |
MYSQL_FIELD_OFFSET | mysql 필드 리스트의 위치를 가진다. |
gcc -o mysql_test mysql_test.c -I/usr/local/include/mysql -L/usr/local/lib/mysql -lmysqlclient |
-I 과 -L 옵션을 이용해서 컴파일 시키는데 필요한 인클루드 파일과 라이브러리 파일이 있는 디렉토리를 명시해주면 된다. 위의 디렉토리는 필자가 가진 시스템의 경우이고, 위의 디렉토리는 시스템에 따라서 다를수 있으니 자신의 시스템 설정에 맞도록 옵션을 주고 컴파일 하기 바란다.
이상 간단하게 mysql API 를 살펴보았다. 위의 예제는 많은 mysql API 중의 극히 일부분만을 써서 꼭필요한 기능만 구현한것이다. 더 자세한 정보는 www.mysql.org 사이트를 참고하기 바란다. } }}
from www.joinc.co.kr