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_RES
Esta 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_ROW
Esta é 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_FIELD
Esta 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_FIELD
para 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_OFFSET
Esta é 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_ulonglong
O tipo usado pelo número de linhas e para
mysql_affected_rows()
,mysql_num_rows()
, emysql_insert_id()
. Este tipo fornece uma faixa de0
a1.84e19
.Em alguns sistemas, tentar imprimir um valor do tipo
my_ulonglong
não funcionará. Para imprimir tais valores, converta-os paraunsigned long
e 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 * name
O nome do campo, como um string terminada com null.
char * table
O nome da tabela contendo este campo, se não for um campo calculado. Para campos calculador, o valor
table
é uma string vazia.char * def
O 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 tipo
O tipo do campo. O valor
tipo
pode ser um dos seguintes:Valou tipo Descrição do tipo FIELD_TYPE_TINY
campo TINYINT
FIELD_TYPE_SHORT
campo SMALLINT
FIELD_TYPE_LONG
campo INTEGER
FIELD_TYPE_INT24
campo MEDIUMINT
FIELD_TYPE_LONGLONG
campo BIGINT
FIELD_TYPE_DECIMAL
campo DECIMAL
ouNUMERIC
FIELD_TYPE_FLOAT
campo FLOAT
FIELD_TYPE_DOUBLE
campo DOUBLE
ouREAL
FIELD_TYPE_TIMESTAMP
campo TIMESTAMP
FIELD_TYPE_DATE
campo DATE
FIELD_TYPE_TIME
campo TIME
FIELD_TYPE_DATETIME
campo DATETIME
FIELD_TYPE_YEAR
campo YEAR
FIELD_TYPE_STRING
campo CHAR
FIELD_TYPE_VAR_STRING
campo VARCHAR
FIELD_TYPE_BLOB
campo BLOB
ouTEXT
(usamax_length
para determinar o tamanho máximo)FIELD_TYPE_SET
campo SET
FIELD_TYPE_ENUM
campo ENUM
FIELD_TYPE_NULL
campo tipo- NULL
FIELD_TYPE_CHAR
Deprecado; use FIELD_TYPE_TINY
Você pode utilizar a macro
IS_NUM()
para testar se uma campo tem um tipo numérico. Passe o valortipo
paraIS_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 length
A largura de um campo, como especificado nas definições da tabela.
unsigned int max_length
A 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 param
Diferentes parâmetros binários para o campo. O valor de
param
pode ter zero ou mais dos seguintes conjunto de bits:Valor param Descrição param NOT_NULL_FLAG
Campo não pode ser NULL
PRI_KEY_FLAG
Campo é parte de uma chave primária UNIQUE_KEY_FLAG
Campo é parte de uma chave única MULTIPLE_KEY_FLAG
Campo é parte de uma chave não única UNSIGNED_FLAG
Campo tem o atributo UNSIGNED
ZEROFILL_FLAG
Campo tem o atributo ZEROFILL
BINARY_FLAG
Campo tem o atributo BINARY
AUTO_INCREMENT_FLAG
Campo tem o atributo AUTO_INCREMENT
ENUM_FLAG
Campo é um ENUM
(obsoleto)SET_FLAG
Campo é um SET
(obsoleto)BLOB_FLAG
Campo é um BLOB
ouTEXT
(obsoleto)TIMESTAMP_FLAG
Campo é um TIMESTAMP
(obsoleto)Uso dos parâmetros
BLOB_FLAG
,ENUM_FLAG
,SET_FLAG
, eTIMESTAMP_FLAG
foram obsoletos porque eles indicavam o tipo de um campo e não um atributo do tipo. É preferível testarcampo->tipo
paraFIELD_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 NULL
IS_PRI_KEY(param)
Verdadeiro de este campo é uma chave primária IS_BLOB(param)
Verdadeiro se este campo é um BLOB
ouTEXT
(obsoleto; testecampo->tipo
)unsigned int decimals
O número de decimais para um campo numérico.