mysql.h


Función mysql_hex_string()

unsigned long mysql_hex_string(char *to, const char *from, unsigned long length)

Esta función se usa para crear una cadena SQL legal que se puede usar en una sentencia SQL.

La cadena from se codifica a formato hexadecimal, con cada carácter codificado como dos dígitos hexadecimales. El resultado se coloca en la cadena to y se añade el carácter nulo terminador.

La cadena apuntada por by debe tener length bytes de longitud. Se debe conseguir memoria para el buffer to para que tenga al menos length*2+1 bytes de longitud. Cuando mysql_hex_string() regresa, el contenido de to será una cadena terminada con nulo. El valor de retorno será la longitud de la cadena codificada, sin incluir el carácter nulo terminador.

El valor de retorno puede ser colocado en una sentencia SQL usando tanto el formato 0xvalor o X'valor'. Sin embargo, el valor devuelto no incluye el 0x o X'...'. El usuario debe añadir cualquiera de ambos, tal como desee.

mysql_hex_string() fue añadido en MySQL 4.0.23 y 4.1.8.

Ejemplo

char query[1000],*end;

end = strmov(query,"INSERT INTO test_table values(");
end = strmov(end,"0x");
end += mysql_hex_string(end,"Qué es esto",11);
end = strmov(end,",0x");
end += mysql_hex_string(end,"datos binarios: \0\r\n",19);
*end++ = ')';

if (mysql_real_query(&mysql,query,(unsigned int) (end - query)))
{
   fprintf(stderr, "Error al insertar fila, Error: %s\n",
           mysql_error(&mysql));
}

La función strmov() usada en este ejemplo se incluye en la biblioteca mysqlclient y funciona como strcpy() pero devolviendo un puntero al terminador nulo del primer parámetro.

Valores de retorno

La longitud del valor colocado en to, sin incluir el carácter nulo terminador.

Errores

Ninguno.