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_connect 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_warning_count

Tipos API C

MYSQL MYSQL_DATA MYSQL_FIELD MYSQL_RES MYSQL_ROW MYSQL_ROWS

Función mysql_use_result()

MYSQL_RES *mysql_use_result(MYSQL *mysql)

Se debe usar mysql_store_result() o mysql_use_result() para cada consulta que haya recuperado datos (SELECT, SHOW, DESCRIBE, EXPLAIN, CHECK TABLE, etc).

mysql_use_result() inicia una recuperación de un conjunto de resultados, pero no lee el conjunto de resultados en el cliente, como hace mysql_store_result(). En su lugar, cada fila debe ser recuperada individualmente mediante llamadas a mysql_fetch_row(). Esto lee el resultado de una consulta directamente desde el servidor sin almacenarlo en una tabla temporal o en un buffer local, lo que es algo más rápido y requiere mucha menos memoria que mysql_store_result(). El cliente reservará memoria sólo para la fila actual y un buffer de comunicación que puede crecer hasta un máximo de max_allowed_packet bytes.

Por otra parte, no se debe usar mysql_use_result() si se va a hacer mucho proceso para cada fila en el lado del cliente, o si la salida se envía a una pantalla en la que el usuario puede usar ^S (parar el desplazamiento). Esto bloqueará el servidor e impide que otros procesos puedan actualizar las tablas para las que los datos están siendo recuperados.

Cuando se usa mysql_use_result(), se debe ejecutar mysql_fetch_row() hasta que devuelva un valor NULL, en caso contrario, las filas no recuperadas se devolverán como parte del conjunto de resultados de la siguiente consulta. El API C obtendrá un error "Commands out of sync; you can't run this command now if you forget to do this!".

No se debe usar mysql_data_seek(), mysql_row_seek(), mysql_row_tell(), mysql_num_rows() o mysql_affected_rows() con un resultado devuelto desde mysql_use_result(), tampoco se deben lanzar otras consultas hasta que mysql_use_result() haya finalizado. (Sin embargo, después de que se hayan recuperado todas las filas, mysql_num_rows() devolverá con precisión el número de filas recuperadas.)

Se debe llamar a mysql_free_result() una vez que se haya terminado de procesar el conjunto de resultados.

Valores de retorno  

Una estructura de resultado MYSQL_RES. NULL si se produce un error.

Errores  

mysql_use_result() resetea mysql_error y mysql_errno si tiene éxito.

CR_COMMANDS_OUT_OF_SYNC: los comandos fueron ejecutados en un orden inapropiado.

CR_OUT_OF_MEMORY: no hay memoria.

CR_SERVER_GONE_ERROR: el servidor MySQL no está presente.

CR_SERVER_LOST: la conexión con el servidor se perdió durante la consulta.

CR_UNKNOWN_ERROR: ha ocurrido un error desconocido.