Tipos de Dados da API C
MariaDB
Esta estrutura representa um manpulador para uma conexão ao banco de dados. É usada para quase todas as funções MySQL.
MYSQL_RESEsta estrutura representa o resultado de uma consulta que retorna linhas (
SELECT,SHOW,DESCRIBE,EXPLAIN). A informação retornada de uma consulta é chamada conjunto de resultado no resto desta seção.MYSQL_ROWEsta é uma representação segura de tipo de uma linha de dados. Ela é implementada atualmente como um vetor de strings de tamanho fixo (Você não pode tratá-los como strings terminadas com null se os valores do campo podem conter dados binários, porque tais valores podem conter um byte null internamente.). Linhas são obtidas pela chamada de
mysql_fetch_row().MYSQL_FIELDEsta estrutura contém informação sobre um campo, tais como nome, tipo e tamanho do campo. Seus membros são descritos em mais detalhes aqui. Você pode obter a estrutura
MYSQL_FIELDpara cada campo chamandomysql_fetch_field()repetidamente. Valores de campos não são parte desta estrutura; eles estão contidos na estruturaMYSQL_ROW.MYSQL_FIELD_OFFSETEsta é uma representação segura de um offset em uma lista de campos MySQL. (Usado por
mysql_field_seek().) Offsets são números de campos em um registro, começando com zero.my_ulonglongO tipo usado pelo número de linhas e para
mysql_affected_rows(),mysql_num_rows(), emysql_insert_id(). Este tipo fornece uma faixa de0a1.84e19.Em alguns sistemas, tentar imprimir um valor do tipo
my_ulonglongnão funcionará. Para imprimir tais valores, converta-os paraunsigned longe use o formato de impressão%lu. Exemplo:printf ('Número de linhas: %lu\n', (unsigned long) mysql_num_rows(resultado));
A estrutura MYSQL_FIELD contem os membros listados aqui:
char * nameO nome do campo, como um string terminada com null.
char * tableO nome da tabela contendo este campo, se não for um campo calculado. Para campos calculador, o valor
tableé uma string vazia.char * defO valor padrão para este campo, como um string terminada em null. Ele é atribuido apenas se você utilizar
mysql_list_fields().enum enum_field_types tipoO tipo do campo. O valor
tipopode ser um dos seguintes:Valou tipo Descrição do tipo FIELD_TYPE_TINYcampo TINYINTFIELD_TYPE_SHORTcampo SMALLINTFIELD_TYPE_LONGcampo INTEGERFIELD_TYPE_INT24campo MEDIUMINTFIELD_TYPE_LONGLONGcampo BIGINTFIELD_TYPE_DECIMALcampo DECIMALouNUMERICFIELD_TYPE_FLOATcampo FLOATFIELD_TYPE_DOUBLEcampo DOUBLEouREALFIELD_TYPE_TIMESTAMPcampo TIMESTAMPFIELD_TYPE_DATEcampo DATEFIELD_TYPE_TIMEcampo TIMEFIELD_TYPE_DATETIMEcampo DATETIMEFIELD_TYPE_YEARcampo YEARFIELD_TYPE_STRINGcampo CHARFIELD_TYPE_VAR_STRINGcampo VARCHARFIELD_TYPE_BLOBcampo BLOBouTEXT(usamax_lengthpara determinar o tamanho máximo)FIELD_TYPE_SETcampo SETFIELD_TYPE_ENUMcampo ENUMFIELD_TYPE_NULLcampo tipo- NULLFIELD_TYPE_CHARDeprecado; use FIELD_TYPE_TINYVocê pode utilizar a macro
IS_NUM()para testar se uma campo tem um tipo numérico. Passe o valortipoparaIS_NUM()e ele irá avaliar como VERDADEIRO (TRUE) se o campo for numérico:if (IS_NUM(campo->tipo)) printf('Campo é numérico\n');unsigned int lengthA largura de um campo, como especificado nas definições da tabela.
unsigned int max_lengthA largura máxima do campo no conjunto de resultados (O tamanho do maior valor do campo para os registro no resultado atual). Se você utilizar
mysql_store_result()oumysql_list_fields(), ele contem o tamanho máximo para o campo. Se você utilizamysql_use_result(), o valor desta variável é zero.unsigned int paramDiferentes parâmetros binários para o campo. O valor de
parampode ter zero ou mais dos seguintes conjunto de bits:Valor param Descrição param NOT_NULL_FLAGCampo não pode ser NULLPRI_KEY_FLAGCampo é parte de uma chave primária UNIQUE_KEY_FLAGCampo é parte de uma chave única MULTIPLE_KEY_FLAGCampo é parte de uma chave não única UNSIGNED_FLAGCampo tem o atributo UNSIGNEDZEROFILL_FLAGCampo tem o atributo ZEROFILLBINARY_FLAGCampo tem o atributo BINARYAUTO_INCREMENT_FLAGCampo tem o atributo AUTO_INCREMENTENUM_FLAGCampo é um ENUM(obsoleto)SET_FLAGCampo é um SET(obsoleto)BLOB_FLAGCampo é um BLOBouTEXT(obsoleto)TIMESTAMP_FLAGCampo é um TIMESTAMP(obsoleto)Uso dos parâmetros
BLOB_FLAG,ENUM_FLAG,SET_FLAG, eTIMESTAMP_FLAGforam obsoletos porque eles indicavam o tipo de um campo e não um atributo do tipo. É preferível testarcampo->tipoparaFIELD_TYPE_BLOB,FIELD_TYPE_ENUM,FIELD_TYPE_SET, ouFIELD_TYPE_TIMESTAMP.O seguinte exemplo ilustra o uso típico do valor
param:if (campo->param & NOT_NULL_FLAG) printf('Campo não pode ser nulo\n');Você pode usar as seguintes macros para determinar o status dos valores
param:Status param Descrição IS_NOT_NULL(param)Verdadeiro se se este campo é definido como NOT NULLIS_PRI_KEY(param)Verdadeiro de este campo é uma chave primária IS_BLOB(param)Verdadeiro se este campo é um BLOBouTEXT(obsoleto; testecampo->tipo)unsigned int decimalsO número de decimais para um campo numérico.