Explicación detallada de la interfaz MySQL en lenguaje C

Introducir una interfaz MySQL al lenguaje C

mysql_character_set_name()
  • const char* mysql_character_set_name(MYSQL* mysql)
  • Devuelve el conjunto de caracteres predeterminado para la conexión actual
  • Valor devuelto: el conjunto de caracteres predeterminado
mysql_close()
  • anular mysql_close(MYSQL* mysql)
  • Descripción: Cierra la conexión abierta anteriormente, si mysql_init() o mysql_connect() asignaron automáticamente el identificador, mysql_close() también desasignará el identificador de conexión apuntado por mysql.
mysql_data_seek()
  • anular mysql_data_seek (resultado de MYSQL_RES*, compensación de my_ulonglong)
  • Busque cualquier fila en el conjunto de resultados de la consulta. El valor de compensación es el número de fila, que va de 0 a mysql_num_rows(result) -1 .
  • Esta función requiere que la estructura del conjunto de resultados contenga todos los resultados de la consulta. Como resultado, mysql_data_seek() solo debe usarse junto con mysql_store_result(), no mysql_use_result().
mysql_errno()
  • int sin firmar mysql_errno(MYSQL* mysql)
  • Para la conexión especificada por mysql, mysql_errno() devuelve el código de error de la función API llamada más recientemente, que puede o no haber tenido éxito.
  • Un valor de retorno de "0" indica que no ocurrió ningún error.
  • En caso de falla, devuelve el código de error de la última llamada a mysql_xxx().
Error de MySQL()
  • const char* mysql_error(MYSQL* mysql)
  • Para la conexión especificada por mysql, mysql_error() devuelve una cadena terminada en NULL que contiene el mensaje de error para la función API llamada más recientemente que falló.
  • Si la función no falla, el valor de retorno de mysql_error() puede ser el error anterior o una cadena vacía que indica que no hay error.
mysql_fetch_field()
  • MYSQL_FIELD* mysql_fetch_field(resultado de MYSQL_RES*)

  • Devuelve las columnas del conjunto de resultados en la estructura MYSQL_FIELD. Llame a esta función repetidamente para recuperar información sobre todas las columnas del conjunto de resultados. Cuando no quedan campos, mysql_fetch_field() devuelve NULL.

  • Cada vez que se ejecuta una nueva consulta SELECT, mysql_fetch_field() se restablece para devolver información sobre el primer campo.

  • Las llamadas a mysql_field_seek() también afectan los campos devueltos por mysql_fetch_field().

  • Estructura MYSQL_FIELD para la columna actual. Devuelve NULL si no quedan columnas.

  • Nota: si se llama a mysql_query() para realizar una SELECCIÓN en una tabla, pero no se llama a mysql_store_result(), si se llama a mysql_fetch_field() para solicitar la longitud de un campo BLOB, MYSQL devolverá la longitud de blob predeterminada (8 KB).

    MYSQL_FIELD* field;
    while(field = mysql_fetch_field(result))
    printf("field name %s
    ",field->name); //Imprime el nombre del campo de cada columna

mysql_fetch_fields()
  • MYSQL_FIELD* mysql_fetch_fields(resultado de MYSQL_RES*)

  • Para un conjunto de resultados, devuelve una matriz de todas las estructuras MYSQL_FIELD. Cada estructura proporciona definiciones de campo para 1 columna en el conjunto de resultados

  • Valor devuelto: una matriz de estructuras MYSQL_FIELD para todas las columnas en el conjunto de resultados.

    unsigned int num_fields;
    unsigned int i;
    MYSQL_FIELD* fields;
    
    num_fields = mysql_num_fields(res);
    fields = mysql_fetch_field(res);
    for (i = 0; i < num_fields; ++i)
    	printf("Field %u is %s
    

    ", i, campos[i].nombre);

mysql_fetch_longitudes()
  • largo sin firmar * mysql_fetch_lengths (resultado MYSQL_RES *)

  • Devuelve la longitud de las columnas de la fila actual del conjunto de resultados.

  • Si el conjunto de resultados contiene datos binarios, esta función debe usarse para determinar el tamaño de los datos porque strlen() devolverá resultados incorrectos para cualquier campo que contenga caracteres NULL.

  • Valor devuelto: matriz de enteros largos sin signo que representan el tamaño de cada columna (sin ningún carácter NULL de terminación). Si hay un error, devuelve NULL

    MYSQL_ROW row;
    unsigned long *lengths;
    unsigned int num_fields;
    unsigned int i;
    
    mysql_data_seek(res, 1);
    
    row = mysql_fetch_row(res);
    if (row)
    {
    	num_fields = mysql_num_fields(res);
    	lengths = mysql_fetch_lengths(res);
    
    	for (i = 0; i < num_fields; ++i)
    		printf("Column %u is %lu bytes in length.
    

    ", i, longitudes[i]);
    }

mysql_fetch_row()
  • MYSQL_ROW mysql_fetch_row (resultado de MYSQL_RES*)

  • Recupera la siguiente fila del conjunto de resultados. Cuando se usa después de mysql_store_result(), mysql_fetch_row() devuelve NULL si no hay filas para recuperar

  • El número de valores en línea viene dado por mysql_num_fields(resultado). Si la fila contiene valores devueltos por una llamada a mysql_fetch_row(), se accede a los punteros a esos valores como fila[0] a fila[mysql_num_fields(resultado)-1]. Un valor NULL en una fila se indica mediante un puntero NULL.

  • Las longitudes de los valores de campo en una fila se pueden obtener llamando a mysql_fetch_lengths(). Para campos vacíos y campos que contienen NULL, la longitud es 0. Al examinar el puntero al valor del campo, se pueden distinguir. Si el puntero es NULL, el campo es NULL; de lo contrario, el campo está vacío.

  • Valor de retorno: estructura MYSQL_ROW para la siguiente fila, o NULL si no hay más filas para recuperar o si se produjo un error.

    Fila MYSQL_ROW;
    unsigned int num_fields;
    int sin firmar i;

    num_fields = mysql_num_fields(resultado);
    while(fila = mysql_fetch_row(resultado))
    { largo sin firmar * longitudes; longitudes = mysql_fetch_lengths(resultado); for(i = 0;i < num_fields; ++i) printf("[%.*s] “,(int)longitudes[i], fila[i] ? fila[i] : “NULL”); printf( ” "); }






mysql_field_count()
  • int sin firmar mysql_field_count(MYSQL* mysql)
  • Devuelve el número de columnas de la consulta más reciente que actúa en la combinación
  • El uso normal de esta función es cuando mysql_store_result() devuelve NULL (y, por lo tanto, ningún puntero de conjunto de resultados). En este caso, se puede llamar a mysql_field_count() para determinar si mysql_store_result() debe producir un resultado no nulo. De esta forma, el cliente puede tomar la acción adecuada sin saber si la consulta es una instrucción SELECT (o similar a SELECT).
mysql_field_seek()
  • MYSQL_FIELD_OFFSET mysql_field_seek (resultado de MYSQL_RES*, compensación de MYSQL_FIELD_OFFSET)
  • Establezca el cursor de campo en el desplazamiento dado. La siguiente llamada a mysql_fetch_field() recuperará la definición de columna asociada con ese desplazamiento.
  • Para encontrar el inicio de la línea, pase un desplazamiento de 0.
  • Valor de retorno: el valor anterior del cursor de campo.
mysql_field_tell()
  • MYSQL_FIELD_OFFSET mysql_field_tell (resultado de MYSQL_RES*)
  • Devuelve el desplazamiento actual del cursor.
mysql_free_result()
  • Libera la memoria asignada para el conjunto de resultados. Después de completar la operación en el conjunto de resultados, debe llamar a mysql_free_result() para liberar la memoria utilizada por el conjunto de resultados.
  • No intente acceder al conjunto de resultados después de que se complete el lanzamiento.
mysql_get_character_set_info()
  • vacío mysql_get_character_set_info(MYSQL* mysql, MY_CHARSET_INFO* cs)
  • Esta función proporciona información sobre el conjunto de caracteres predeterminado del cliente. El conjunto de caracteres predeterminado se puede cambiar usando la función mysql_set_character_set().
mysql_init()
  • MYSQL* mysql_init(MYSQL* mysql)
  • Asigne o inicialice un objeto MYSQL apropiado para mysql_real_connect(). Si mysql es un puntero NULL, esta función asignará, inicializará y devolverá el nuevo objeto. De lo contrario, el objeto se inicializa y se devuelve la dirección del objeto.
  • Si mysql_init() asignó un nuevo objeto, cuando mysql_close() se llama para cerrar la conexión. El objeto será liberado.
  • Valor de retorno: el identificador MYSQL* inicializado. Devuelve NULL si no hay suficiente memoria para asignar el nuevo objeto.
mysql_list_dbs()
  • MYSQL_RES* mysql_list_dbs(MYSQL_mysql,const char_wild)
  • Devuelve un conjunto de resultados que consta de nombres de bases de datos en un servidor que coincide con una expresión regular simple especificada por un parámetro comodín. Los parámetros comodín pueden contener "%" o "_", o pueden ser NULL para que coincidan todas las bases de datos.
  • El método para llamar a mysql_list_dbs() es similar a ejecutar una consulta MOSTRAR bases de datos
  • El conjunto de resultados debe liberarse con mysql_free_result()
  • Valor devuelto: devuelve el conjunto de resultados de MYSQL_RES después del éxito. Devuelve NULL si hay un error.
mysql_list_fields()
  • MYSQL_RES* mysql_list_fields(MYSQL* mysql,const char* table,const char* wild)
  • Devuelve un conjunto de resultados que consta de nombres de campo de la tabla dada que coincide con la expresión regular simple especificada por el argumento comodín. Los parámetros comodín pueden contener comodines "%" o "_", o un puntero NULL para coincidir con todos los campos.
  • Llamar al método mysql_list_fields() es similar a ejecutar la consulta SHOW COLUMNS FROM tal_name.
  • Valor devuelto: si tiene éxito, devuelva el conjunto de resultados de MYSQL_RES. Devuelve NULL si hay un error.
mysql_list_tables()
  • MYSQL_RES* mysql_list_tables(MYSQL_mysql,const char_wild)
  • Valor devuelto: Devuelve un conjunto de resultados que consta de nombres de tabla en la base de datos actual que coincide con la expresión regular simple especificada por el parámetro comodín. Los argumentos comodín pueden contener comodines "%" o "_", o un puntero NULL para compararlo con todas las demás tablas.
  • El método para llamar a mysql_list_tables() es similar a ejecutar la consulta SHOW tables;
  • Valor devuelto: si tiene éxito, devuelva el conjunto de resultados de MYSQL_RES. Devuelve NULL si hay un error.
mysql_num_rows()
  • my_ulonglong mysql_num_rows(resultado de MYSQL_RES*)
  • Devuelve el número de filas en el conjunto de resultados
  • Si se usa mysql_store_result(), se puede llamar a mysql_num_rows() inmediatamente.
  • Si se usa mysql_use_result(), mysql_num_rows() no devuelve el valor correcto hasta que se hayan recuperado todas las filas del conjunto de resultados.
  • Valor devuelto: el número de filas en el conjunto de resultados.
mysql_options()
  • int mysql_options(MYSQL* mysql,enum opción mysql_option,const char* arg)
  • Se puede usar para establecer opciones de conexión adicionales y afectar el comportamiento de la conexión. Esta función se puede llamar varias veces para establecer varias opciones.
  • mysql_options() debe llamarse después de mysql_init() y antes de mysql_connect() o mysql_real_connect()
  • El parámetro de opción hace referencia a la opción que pretende establecer y el parámetro Arg es el valor de la opción. Si la opción es un número entero, entonces arg debería apuntar al valor del número entero.
  • No enumero los posibles valores de opciones aquí, puede Baidu usted mismo.
  • Valor devuelto: 0 en caso de éxito, distinto de cero si se utilizan opciones desconocidas.
mysql_ping()
  • int mysql_ping(MYSQL*mysql)
  • Compruebe que la conexión con el servidor funciona. Si se pierde el trabajo, se intentará la reconexión automáticamente.
  • Esta función puede ser utilizada por clientes que han estado inactivos durante mucho tiempo para verificar si el servidor ha cerrado la conexión y volver a conectarse si es necesario.
  • Valor devuelto: Devuelve 0 si la conexión con el servidor es válida, distinto de cero si hay un error. El valor devuelto distinto de cero no indica si el servidor MYSQL se ha cerrado y la conexión puede terminarse por otros motivos, como problemas de red.
mysql_query()
  • int mysql_query(MYSQL* mysql,const char* consulta)
  • Ejecute la consulta SQL a la que apunta la consulta "Cadena terminada en NULL". Normalmente, la cadena debe contener una declaración SQL y no se deben agregar puntos y comas ";" o "g" a la declaración.
  • mysql_query() no se puede usar para consultas que contienen datos binarios, debe usarse mysql_real_query() en su lugar, porque los datos binarios pueden contener el carácter "", que mysql_query() interpreta como el final de la cadena de consulta.
  • Devuelve 0 si la consulta es exitosa y distinto de cero si hay un error.
mysql_real_connect()
  • MYSQL* mysql_real_connect(MYSQL* mysql,const char* host,const char* user,const char* passwd,const char* db,const char* unix_socket,insigned long client_flag)
  • mysql_real_connect() intenta establecer una conexión con el motor de base de datos MYSQL que se ejecuta en el host. mysql_real_connect() debe completarse correctamente antes de que pueda ejecutar cualquier otra función API que requiera un mecanismo de manejo de conexión MYSQL válido.
  • El primer parámetro debe ser la dirección de una estructura MYSQL existente. Llame a mysql_init() para inicializar la estructura MYSQL.
  • El valor del segundo parámetro host debe ser el nombre de host o la dirección IP. Si el host es NULL o la cadena "localhost", la conexión se tratará como una conexión al host local. Si el sistema operativo admite sockets Unix o este nombre de canalizaciones Windows, se utilizarán en lugar de TCP/IP para conectarse al servidor.
  • El tercer parámetro de usuario del parámetro contiene el ID de inicio de sesión de MYSQL del usuario. Si el usuario es NULL o la cadena vacía, el usuario se considerará el usuario actual. En un entorno UNIX, este es el nombre de inicio de sesión actual. En Windows, se debe especificar el nombre de usuario actual.
  • El parámetro passwd contiene la contraseña del usuario. Si passwd es NULL, solo las entradas en la tabla de usuarios (con un campo de contraseña vacío) para ese usuario se verifican en busca de una coincidencia. De esta forma, el administrador de la base de datos puede configurar el sistema de permisos MYSQL de una manera específica, según si el usuario tiene la contraseña especificada, el usuario obtendrá diferentes permisos.
  • Nota: No intente cifrar la contraseña antes de llamar a mysql_real_connect(), la API del cliente se encargará automáticamente del cifrado de la contraseña.
  • "db" es el nombre de la base de datos, si db es NULL, la conexión establecerá la base de datos predeterminada en este valor.
  • Si el puerto no es 0, su valor se utilizará como número de puerto para las conexiones TCP/IP. Tenga en cuenta que el parámetro host determina el tipo de conexión.
  • Si unix_socket no es NULL, esta cadena describe qué socket o canal con nombre se debe usar. Nota: El parámetro "host" determina el tipo de conexión.
  • El valor de client_flag suele ser 0, sin embargo, también se pueden establecer banderas. No lo presentaré, solo búscalo en Google.
  • Valor de retorno: si la conexión es exitosa, devuelva el identificador de conexión MYSQL*. Devuelve NULL si falla la conexión. Para una conexión exitosa, el valor devuelto es el mismo que el valor del primer parámetro.
mysql_real_query()
  • int mysql_real_query(MYSQL* mysql,const char* consulta,largo largo sin firmar)
  • Ejecute la consulta SQL a la que apunta "consulta", que será el byte de longitud de cadena "largo". Normalmente, la cadena debe contener una declaración SQL y no se debe agregar ";" o "g" a la declaración.
  • Para consultas que contienen datos binarios, debe usar mysql_real_query() en lugar de mysql_query() porque los datos binarios pueden contener caracteres "". Además, mysql_real_query() es más rápido que mysql_query() porque no llama a strlen() en la cadena de consulta.
  • Devuelve 0 si la consulta es exitosa. Si se produce un error, se devuelve un valor distinto de cero.
mysql_row_seek()
  • MYSQL_ROW_OFFSET mysql_row_seek(resultado de MYSQL_RES*, compensación de MYSQL_ROW_OFFSET)
  • Coloca coordenadas de fila en cualquier fila del conjunto de resultados de la consulta. offset es el desplazamiento de la fila, que debe ser el valor devuelto por mysql_row_tell() o mysql_row_seek(). El valor no es un número de fila, use mysql_data_seek() si tiene la intención de consultar las filas en el conjunto de resultados por número
  • Esta función requiere los resultados completos de la consulta en el conjunto de resultados, por lo que mysql_row_seek() solo debe usarse con mysql_store_result(), no con mysql_use_result().
  • El valor anterior de la coordenada de fila que se puede pasar a usos posteriores de mysql_row_seek().
mysql_row_tell()
  • MYSQL_ROW_OFFSET mysql_row_tell (resultado de MYSQL_RES*)
  • Para el mysql_fetch_row() anterior, devuelve la posición actual del cursor. Este valor se puede utilizar como argumento para mysql_row_seek().
  • Solo se puede usar después de mysql_store_result(), no después de mysql_use_result().
  • Valor devuelto: el desplazamiento actual de las coordenadas de la fila
mysql_set_character_set()
  • int mysql_set_character_set(MYSQL* mysql, char* csname)

  • Esta función se utiliza para establecer el conjunto de caracteres predeterminado para la conexión actual. La cadena csname especifica un nombre de juego de caracteres válido. La intercalación de conexión se convierte en la intercalación predeterminada para el juego de caracteres.

  • Valor de retorno: 0 significa éxito, valor distinto de cero significa error

    if(!mysql_set_charset_name(&mysql,“utf8”))
    { printf("Nuevo conjunto de caracteres del cliente: %s ", mysql_character_set_name(&mysql)); }


mysql_shutdown()
  • int mysql_shutdown(MYSQL* mysql, enum enum_shutdown_level shutdown_level)
  • Solicitar el cierre del servidor de la base de datos. Para asegurarse de que el usuario conectado debe tener autorización de APAGADO.
  • Valor devuelto: 0 para éxito, distinto de cero para un error.
mysql_store_result()
  • MYSQL_RES* mysql_store_result(MYSQL*mysql)
  • Para cada consulta (SELECCIONAR, MOSTRAR, DESCRIBIR, EXPLICAR, COMPROBAR TABLA, etc.) que recupere datos con éxito, se debe llamar a mysql_store_result() o mysql_use_store().
  • mysql_store_result() lee los resultados completos de la consulta al cliente, asigna una estructura MYSQL_RES y coloca los resultados en esa estructura.
  • mysql_store_result() devuelve un puntero NULL si la consulta no devuelve un conjunto de resultados
  • Si falla la lectura del conjunto de resultados, mysql_store_result() también devuelve un puntero NULL. Puede comprobar si se produjo un error comprobando si mysql_error() devuelve una cadena no vacía y mysql_errno() devuelve un valor distinto de cero.
  • Si no se devuelven filas, se devolverá un conjunto de resultados vacío. (La configuración del conjunto de resultados vacío es diferente del puntero nulo como valor de retorno)
  • Una vez que llama a mysql_store_result() y obtiene un resultado que no es un puntero NULL, puede llamar a mysql_num_rows() para averiguar el número de filas en el conjunto de resultados.
  • Puede llamar a mysql_fetch_row() para obtener una fila en el conjunto de resultados, o mysql_row_seek() o mysql_row_tell() para obtener o establecer la posición actual de la fila en el conjunto de resultados.
  • Una vez que se completa la operación en el conjunto de resultados, se debe llamar a mysql_free_result().
  • Valor de retorno: colección de resultados MYSQL_RES con múltiples resultados. Devuelve NULL si hay un error.
mysql_use_result()
  • MYSQL_RES* mysql_use_result(MYSQL* mysql)
  • mysql_use_result inicializará la recuperación del conjunto de resultados, pero en realidad no lee el conjunto de resultados al cliente como lo hace mysql_store_result(). Debe recuperar cada fila individualmente a través de una llamada a mysql_fetch_row(). Esto leerá el resultado directamente desde el servidor sin guardarlo en una tabla temporal o en un búfer local, que es más rápido y usa menos memoria que mysql_store_result(). El cliente asigna memoria solo para la línea actual y los búferes de comunicación.
  • Si se usa mysql_use_result(), esto vincula el servidor y evita que otros subprocesos actualicen las tablas.
  • Al usar mysql_use_result(), mysql_fetch_row() debe ejecutarse hasta que se devuelva un valor NULL; de lo contrario, las filas no recuperadas se devolverán como parte de la próxima recuperación.
  • mysql_data_seek(), mysql_row_seek(), mysql_row_tell(), mysql_num_row() no se deben usar con los resultados devueltos por mysql_use_result(), ni se deben emitir otras consultas hasta que se complete mysql_use_result().
  • Una vez que se completa la operación en el conjunto de resultados, se debe llamar a mysql_free_result().
También hay algunas interfaces que no he usado en mi desarrollo por el momento, las actualizaré más adelante si son útiles.

Supongo que te gusta

Origin blog.csdn.net/shuux666/article/details/124146376
Recomendado
Clasificación