mysql_real_connect() - Mysql 데이터베이스 엔진으로 연결 시도. |
|
형태 & 인수 |
MYSQL *mysql_real_connect( MYSQL *mysql, /* MYSQL 구조의 어드레스 */ const char *host, /* 호스트 이름 또는 IP 어드레스 (default = localhost) */ const char *user, /* MySQL Login ID (default = 현재 로그인 이름) */ const char *passwd, /* 패스워드 (default = none) */ const char *db, /* 데이터베이스 이름 (default = none) */ unsigned int port, /* TCP/IP 연결 포트 (use default) */ const char *unix_socket, /* 소켓 (use default) */ unsigned long client_flag) /* flag (none) */ |
리턴 값 |
성공 : MYSQL* 연결 핸들 (= 첫 번째 파라미터) 실패 : NULL |
사용자가 유효한 MYSQL 연결 핸들 구조를 요구하는 다른 어떤 API 함수를 실행할 수 있기 전에 성공적으로 완료되어야 한다. |
▶ client_flag 값은 대체로 0이다. 그러나 정확한 기능을 작동하기 위해 다음 플래그의 조합으로 설정될 수 있다:
플래그(Flag) 이름 |
플래그(Flag) 설명 |
CLIENT_COMPRESS |
압축 프로토콜 사용. |
CLIENT_FOUND_ROWS |
변경된 로우의 숫자가 아니라 찾은(맞는) 로우들의 숫자를 리턴. |
CLIENT_IGNORE_SPACE |
함수 이름 후에 공간 허용. 모든 함수 이름을 예비의 단어로 만듦. |
CLIENT_INTERACTIVE |
interactive_timeout 초 허용 (wait_timeout 초대신에) of inactivity before closing the connection. 클라이언트 세션 wait_timeout 변수는 세션 interactive_timeout 변수 값으로 설정. |
CLIENT_LOCAL_FILES |
LOAD DATA LOCAL 조정 가능. |
CLIENT_MULTI_STATEMENTS |
싱글 문자열 (';'로 나눠진)에서 클라이언트가 다중(멀티) 명령문을 보내도록 서버에 전달. 만약 이 플래그가 설정되어 있지 않다면, 멀티-명령문 실행은 불가능하다. |
CLIENT_MULTI_RESULTS |
클라이언트가 멀티-명령문 실행 또는 스토어드 프로시저로부터 멀티 결과 셋을 조정할 수 있다는 것을 서버에 전달. CLIENT_MULTI_STATEMENTS이 설정되어 있다면, 이것은 자동적으로 설정. |
CLIENT_NO_SCHEMA |
db_name.tbl_name.col_name 신텍스를 허용하지 않음. 이것은 ODBC용이다. ODBC 프로그램에곤란한 버그에 사용하는 신텍스를 사용할 경우, parser(쿼리문 분석기)가 에러를 출력하도록 한다. |
CLIENT_ODBC |
원격 데이터베이스를 사용할 때 ODBC를 사용하고 있는지 확인할 수 있다. |
CLIENT_SSL |
SSL 사용. 이 옵션은 어플리케이션 프로그램으로 설정될 수 없다; 이것은 내부적으로 클라이언트 라이브러리 내에 설정된다. mysql_real_connect()함수를 호출하기 전에mysql_ssl_set()함수를 사용. |
[ 에러 ] |
|
CR_CONN_HOST_ERROR |
MySQL 서버로의 연결 실패. |
CR_CONNECTION_ERROR |
로컬 MySQL 서버로의 연결 실패 |
CR_IPSOCK_ERROR |
IP소켓 생성 실패. |
CR_OUT_OF_MEMORY |
메모리 부족. |
CR_SOCKET_CREATE_ERROR |
유닉스 소켓 생성 실패. |
CR_UNKNOWN_HOST |
호스트 이름 용 IP 어드레스 찾기 실패. |
CR_NAMEDPIPEOPEN_ERROR |
윈도우에서 명명된 파이프 생성 실패 |
CR_NAMEDPIPEWAIT_ERROR |
윈도우에서 명명된 파이프 대기(wait for) 실패. |
CR_NAMEDPIPESETSTATE_ERROR |
윈도우에서 파이프 핸들러(조정자) 획득 실패 |
CR_SERVER_LOST |
connect_timeout > 0 이고 서버에 연결하는데 connect_timeout 초 보다 오래 걸리면 또는 서버가 or init-command을 실행하는 동안 죽는다면 실패. |
[ 예제 ]
#include <stdio.h> #include <stdlib.h> #include <mysql.h> #define def_host_name NULL /* host to connect to (default = localhost) */ #define def_user_name "rick" /* user name (default = your login name) "*/ #define def_password "bar" /* password (default = none) */ #define def_db_name NULL /* dtabases to use (default = none) */ #define def_port_num 0 /* use default port */ #define def_socket_name NULL /* use default socket name */ MYSQL my_conn; /* pointer to connection handler */ int main(int argc, char *argv[]) { mysql_init(&my_conn); if ( mysql_real_connect ( &my_conn, /* pointer to connection handler */ def_host_name, /* host to connect to */ def_user_name, /* user name */ def_password, /* password */ def_db_name, /* database to use */ def_port_num, /* port (use default) */ def_socket_name, /* socket (use default) */ 0) /* flags (none) */ ) { printf("Connection success\n"); } else { fprintf(stderr, "Failed to connect to databases: Error: %s\n", mysql_error(&my_conn)); } mysql_close(&my_conn); return EXIT_SUCCESS; }
'API 및 라이브러리 > MySQL C API' 카테고리의 다른 글
MySQL C API - 오류처리 (mysql_errno, mysql_error) (0) | 2011.07.12 |
---|---|
mysql_options() - 연결 옵션을 설정 (0) | 2011.07.12 |
mysql_config명령을 이용한 MySQL C API 컴파일 (0) | 2011.07.11 |
MySQL C API 데이터 타입 (1) | 2011.07.11 |
MySQL C API 함수 개요 (0) | 2011.07.10 |