Curso de MySQL
Consultas, lista de correo 'C++ Con Clase' 'MySQL Con Clase' página de entrada Tabla de contenido Contactar con Webmaster
Curso Sentencias Funciones API C

API C

Funciones API C

mysql_affected_rows mysql_autocommit mysql_change_user mysql_character_set_name mysql_close mysql_commit mysql_connect mysql_create_db mysql_data_seek mysql_debug mysql_drop_db mysql_dump_debug_info mysql_eof mysql_errno mysql_error mysql_escape_string mysql_fetch_field mysql_fetch_fields mysql_fetch_field_direct mysql_fetch_lengths mysql_fetch_row mysql_field_count mysql_field_seek mysql_field_tell mysql_free_result mysql_get_client_info mysql_get_client_version mysql_get_host_info mysql_get_proto_info mysql_get_server_info mysql_get_server_version mysql_hex_string mysql_info mysql_init mysql_insert_id mysql_kill mysql_library_end mysql_library_init mysql_list_dbs mysql_list_fields mysql_list_processes mysql_list_tables mysql_more_results mysql_next_result mysql_num_fields mysql_num_rows mysql_options mysql_ping mysql_query mysql_real_escape_string mysql_real_query mysql_reload mysql_rollback mysql_row_seek mysql_row_tell mysql_select_db mysql_set_server_option mysql_shutdown mysql_sqlstate mysql_ssl_set mysql_stat mysql_store_result mysql_thread_id mysql_use_result mysql_warning_count

Tipos API C

MYSQL MYSQL_DATA MYSQL_FIELD MYSQL_RES MYSQL_ROW MYSQL_ROWS

Función mysql_real_connect()

MYSQL *mysql_real_connect(MYSQL *mysql, const char *host, const char *usuario, const char *password, 
   const char *database, unsigned int puerto, const char *unix_socket, unsigned long client_flag);

mysql_real_connect intenta establecer una conexión con un motor de bases de datos MySQL ejecutándose en host. mysql_real_connect debe completarse con éxito antes de que se puedan ejecutar otras funciones del API, con la excepción de mysql_get_client_info.

Los parámetros a especificar son los siguientes:

Flag Descripción
CLIENT_COMPRESS Usar un protocolo de compresión.
CLIENT_FOUND_ROWS Devuelve el númer de líneas encontradas (coincidentes) en lugar del número de líneas afectadas.
CLIENT_IGNORE_SPACE Permite espacios después de los nombres de función. Hace de todos los nombres de función palabras reservadas.
CLIENT_INTERACTIVE Permite segundos "interactive_timeout" (en lugar de segundos "wait_timeout") de inactividad antes de cerrar la conexión.
CLIENT_LOCAL_FILES Permite manipulación LOAD DATA LOCAL.
CLIENT_MULTI_STATEMENTS Informa al servidor de que el cliente puede enviar consultas multilínea (separadas con `;'). Si este flag no se activa, las consultas multilínea serán desactivadas. Nuevo en versión 4.1.
CLIENT_MULTI_RESULTS Informa al servidor de que el cliente puede manipular conjuntos de resultados multiples procedentes de multi-consultas o procedimientos almacenados. Esto es agrupado automáticamente si CLIENT_MULTI_STATEMENTS es activado. Nuevo en 4.1.
CLIENT_NO_SCHEMA No permite la sintaxis db_name.tbl_name.col_name. Esto es para ODBC. Hace que el analizador sintáctico genere un error si se usa tal sintaxis, lo que resulta útil para encontrar errores en algunos programas ODBC.
CLIENT_ODBC El cliente es un cliente ODBC. Esto hace que mysqld se adapte más a ODBC.
CLIENT_SSL Usar SSL (protocolo de encriptado). Esta opción no debe ser activada por aplicaciones; se activa internamente por la librería del cliente.

Valores de retorno  

Si la conexión ha tenido éxito, el valor de retorno es un manipulador de conexión MYSQL*, NULL si la conexión no ha tenido éxito. Para una conexión exitosa, el valor de retorno es el mismo que el valor del primer parámetro.

Errores  

CR_CONN_HOST_ERROR: fallo al conectar con el servidor MySQL.

CR_CONNECTION_ERROR: fallo al conectar al servidor local MySQL.

CR_IPSOCK_ERROR: fallo al crear un socket IP.

CR_OUT_OF_MEMORY: falta memoria.

CR_SOCKET_CREATE_ERROR: fallo al crear un socket Unix.

CR_UNKNOWN_HOST: fallo al encontrar una dirección IP para el nombre de host.

CR_VERSION_ERROR: al intentar conectar con el servidor se ha producido un error de protocolo por el uso de una librería de cliente que usa un protocolo de una versión diferente. Esto puede ocurrir si se usa una librería de cliente muy antigua para conectarse con un servidor que no se ha arrancado con la opción "--old-protocol".

CR_NAMEDPIPEOPEN_ERROR: fallo al crear una tubería con nombre en Windows.

CR_NAMEDPIPEWAIT_ERROR: fallo al esperar uan tubería con nombre en Windows.

CR_NAMEDPIPESETSTATE_ERROR: fallo al tomar un manipulador de tubería en Windows.

CR_SERVER_LOST: si el connect_timeout > 0 y se tarda más de connect_timeout segundos en conectar con el servidor o si el servidor ha muerto mientras se ejecuta el comando de inicialización.

Ejemplo  

 MYSQL mysql;

(&mysql);
(&mysql,MYSQL_READ_DEFAULT_GROUP,"your_prog_name");
 if (!mysql_real_connect(&mysql,"host","user","passwd","database",0,NULL,0))
 {
     fprintf(stderr, "Fallo al conectar con la base de datos: Error: %s\n",
           mysql_error(&mysql));
 }

Mediante el uso de mysql_options() la librería MySQL leerá las secciones [client] y [your_prog_name] del fichero 'my.cnf', lo que asegura que el programa funcionará, aunque alquien haya arrancado MySQL de algún modo no estándar.

Notar que una vez conectado, mysql_real_connect() activa la opción de reconexión (parte de la estructura MYSQL) a un valor de 1 en versiones del API anteriores a 5.0.3, y de 0 en versiones más recientes. Un valor 1 para esta opción indica, en el caso de que una consulta no pueda ser completada por una pérdida de conexión, se intente reconectar al servidor antes de abandonar.