출처 : http://koronaii.tistory.com/194
MySQL C API
1) my_ulonglong mysql_affected_rows(MYSQL* mysql)
INSERT, UPDATE, DELETE 등의 query로 영향을 받은 ROW의 수를 리턴한다.
2) void mysql_close(MYSQL* mysql) 서버와의 연결을 종료한다.
3) void mysql_data_seek(MYSQL_RES* result, unsigned int offset)
result에서 임의의 ROW에 접근을 하도록 하는 함수이다. offset이 row의 번호를
나타낸다. 0이면 처음 ROW, mysql_num_rows( result ) - 1 은 마지막 row를 나타낸다.
4) unsigned int mysql_errno(MYSQL* mysql)
가장 최근에 mysql에 일어난 에러의 번호를 리턴한다.
5) char* mysql_error(MYSQL* mysql) 가장 최근에 일어난 에러 메시지를 리턴한다.
6) MYSQL_FIELD* mysql_fetch_field(MYSQL_RES* result)
한번 호출할 때마다 한 나의 필드에 대한 정보를 리턴한다.
7) MYSQL_FIELDS* mysql_fetch_fields(MYSQL_RES* result)
배열 형대로 result의 필드에 대한 정보를 한꺼번에 리턴한다.
8) MYSQL_FIELD_OFFSET mysql_field_seek(MYSQL* mysql, MYSQL_FIELD_OFFSET offset)
임의의 필드에 접근을 하도록 한다.
9) MYSQL_FIELD_OFFSET mysql_field_tell(MYSQL_RES* result)
현재 필드의 offset을 리턴한다.
10) void mysql_free_result(MYSQL_RES* result)
result에 할당된 메모리를 해제한다.
11) MYSQL* mysql_init(MYSQL* mysql)
mysql 객체를 초기화 한다. 인자가 NULL이면 새로운 MYSQL 객체를 생성하고, 초기화 하여 리턴한다.
12) MYSQL_RES* mysql_list_dbs(MYSQL* mysql, const char* wild)
현재 서버에 있는 데이타베이스의 목록을 리턴한다. wild는 MySQL에서
사용할 수 있는 정규식을 나타낸다.
result = mysql_list_dbs( &mysql,"%" )
는 모든 데이타베이스를 리턴하는 예이다.(%는 '모든'을 나타낸다)
13) MYSQL_RES* mysql_list_tables(MYSQL* mysql, const char* wild)
현재 데이타베이스에 있는 테이블들의 목록을 리턴한다.
14) unsigned int mysql_num_fields(MYSQL_RES*result) 혹은
unsigned int mysql_num_fields(MYSQL* mysql)
필드의 수를 리턴한다.
15) my_ulonglong mysql_num_rows(MYSQL_RES* result)
result에 총 몇 개의 ROW가 있는지 리턴한다. query 수행 후
mysql_store_result()를 호출하였을 경우에만 사용할 수 있고,
mysql_use_result()는 사용할 수 없다.
16) int mysql_ping(MYSQL* mysql)
서버에 연결 중인지를 리턴한다. 연결이 끊어 졌을 경우, 다시
연결을 시도한다. 서버와 연결을 한 후 오랫동안 가만히 있으면
서버가 연결을 끊어버리는데, 이런 경우에 사용한다.
17) int mysql_query(MYSQL* mysql, const char* query)
query가 포인트 하는 쿼리를 수행한다. query의 끝은 NULL 문자이다.
성공적으로 query를 수행하였으면 0을 리턴한다.
18) MYSQL* mysql_real_connect(MYSQL* mysql, const char* host, const char* user,
const char* passwd, const char* db, uint port, const char* unix_socket,
unit client_flag )
host와의 연결을 시도한다.
19) int mysql_real_query(MYSQL* mysql, const char* query, unsigned int length)
mysql_query()처럼 query를 수행하나, query의 끝이 legnth인 것이 다르다.
20) MYSQL_ROW_OFFSET mysql_row_tell(MYSQL_RES* result)
현재 ROW의 offset을 리턴한다.
21) int mysql_select_db(MYSQL* mysql, const char* db)
사용하고자 하는 database를 변경한다. mysql_query()를 이용하여 "use db이름"
의 query를 수행해도 같은 결과를 얻는다.
22) int mysql_shutdown(MYSQL* mysql)
서버를 종료시킨다. 현재 사용자에게 shutdown 권한이 있어야 한다.
23) MYSQL_RES* mysql_store_result(MYSQL* mysql)
query의 수행 결과를 서버로부터 한 번에 모두 받아 온다.
24) MYSQL_RES* mysql_use_result(MYSQL* mysql)
query의 수행 결과를 서버로부터 한 개의 ROW 씩 받아 온다.
#include <STDIO.H>
#include <MYSQL.H>
#include <ERRNO.H>
void main(void)
{
MYSQL mysql ;
MYSQL_RES* res ;
MYSQL_ROW row ;
int fields ;
mysql_init(&mysql) ;
if(!mysql_real_connect(&mysql, NULL, "사용자","암호", "test" ,3306, (char *)NULL, 0))
{
printf("%s\n",mysql_error(&mysql));
exit(1) ;
}
if(mysql_query(&mysql, "USE super") )
// mysql_query()는 query 수행시에 에러가 나게 되면
// 0이 아닌 값을 리턴한다.
{
printf("%s\n", mysql_error(&mysql) ;
exit(1) ;
}
if(mysql_query(&mysql, "SELECT * FROM dome") )
{
printf("%s\n", mysql_error(&mysql) ;
exit(1) ;
}
res = mysql_store_result( &mysql ) ;
fields = mysql_num_fields(res) ;
while( ( row = mysql_fetch_row( res ) ))
{
for( cnt = 0 ; cnt < fields ; ++cnt)
printf("%12s ", row[cnt]) ;
printf("\n") ;
}
mysql_free_result( res ) ;
mysql_close(&mysql) ;
}
#define SOCKET int
#include <STRING.H>
#include <STDIO.H>
#include <MYSQL.H>
#pragma comment(lib, "libmysql.lib")
#pragma comment(lib, "ws2_32.lib")
#define DB_HOST "localhost"
#define DB_USER "ex>oot" //여기다 아이디를 집어넣습니다.
#define DB_PASS "ex> apmsetup" // 여기다 패스워드를 집어넣습니다.
#define DB_NAME "ex> hwi_db" //DB를 한 mysql에서 만들고 그 이름을 적습니다.
#define SQL_CREATE_TABLE "CREATE TABLE `mysql_api_test` (\
`id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY ,\
`num` INT NULL ,\
`string` VARCHAR( 20 ) NULL \
) TYPE = MYISAM ;" //"
#define SQL_INSERT_RECORD "INSERT INTO `mysql_api_test` ( `id` , `num` , `string` ) \
VALUES (\
NULL , '%d', '%s'\
);" //"
#define SQL_SELECT_RECORD "SELECT * FROM `mysql_api_test`"
#define SQL_DROP_TABLE "DROP TABLE `mysql_api_test`"
int main()
{
MYSQL *connection=NULL, conn;
MYSQL_RES *sql_result;
MYSQL_ROW sql_row;
int query_stat;
int i;
char query[255];
mysql_init(&conn);
// DB 연결
connection = mysql_real_connect(&conn, DB_HOST,
DB_USER, DB_PASS,DB_NAME, 3306,(char *)NULL, 0);
if(connection==NULL)
{
fprintf(stderr, "Mysql connection error : %s", mysql_error(&conn));
return 1;
}
// 테이블 생성
query_stat=mysql_query(connection,SQL_CREATE_TABLE);
if (query_stat != 0)
{
fprintf(stderr, "Mysql query error : %s", mysql_error(&conn));
return 1;
}
// 레코드 삽입
for(i=0;i<5;i++)
{
sprintf(query,SQL_INSERT_RECORD,100+i,"Hwi의 blog");
query_stat = mysql_query(connection, query);
if (query_stat != 0)
{
fprintf(stderr, "Mysql query error : %s", mysql_error(&conn));
return 1;
}
}
// 셀렉트
query_stat=mysql_query(connection,SQL_SELECT_RECORD);
if (query_stat != 0)
{
fprintf(stderr, "Mysql query error : %s", mysql_error(&conn));
return 1;
}
// 결과 출력
sql_result=mysql_store_result(connection);
while((sql_row=mysql_fetch_row(sql_result))!=NULL)
{
printf("%2s %2s %s\n",sql_row[0],sql_row[1],sql_row[2]);
}
mysql_free_result(sql_result);
// 테이블 삭제
query_stat=mysql_query(connection,SQL_DROP_TABLE);
if (query_stat != 0)
{
fprintf(stderr, "Mysql query error : %s", mysql_error(&conn));
return 1;
}
// DB 연결 닫기
mysql_close(connection);
return 0;
}
'학습자료(~2017) > C,C++' 카테고리의 다른 글
[C] 디버그용 매크로 - 매크로 가변인자사용 (1) | 2012.03.15 |
---|---|
[ODBC] ODBC 함수 래퍼런스 (0) | 2012.03.09 |
[C] C LANGUAGE REFERENCE MANUAL C 언어 래퍼런스 메뉴얼 파일 (0) | 2012.01.27 |
가상모니터 관련 소스 (0) | 2012.01.27 |
[GCC] 컴파일 과정, 옵션 [퍼온자료 묶음] (0) | 2012.01.27 |