21.2 API MySQL C
21 API MySQL
Manuel de Référence MySQL 4.1 : Version Française
->Types de données de l'API C . Vue d'ensemble des fonctions de l'API C . Description des fonctions de l'API C . Fonctions C de commandes préparées . Types de données de l'API C . Présentation des fonctions de l'interface C . Descriptions des fonctions C pour les requêtes préparées . Gestion des commandes multiples avec l'interface C . Gestion des dates et horaires avec l'interface C . Description des fonctions threadées de C . Description des fonctions C du serveur embarqué . Questions courantes sur la bibliothèque C . Compiler les clients . Comment faire un client MySQL threadé . libmysqld , la bibliothèque du serveur embarqué MySQL
|
21.2.1 Types de données de l'API C
-
MYSQL
-
Cette structure représente un gestionnaire de connexion à la base de données.
Elle est utilisée dans la plupart des fonctions MySQL.
-
MYSQL_RES
-
Cette structure représente le résultat d'une requête qui retourne des lignes
(
SELECT
,
SHOW
,
DESCRIBE
,
EXPLAIN
). L'information
retournée par une requête est appelée
jeu de résultats
dans le reste de
cette section.
-
MYSQL_ROW
-
C'est une représentation sûre pour les types d'une ligne de données. Elle est
actuellement implémentée en tant que tableau de chaîne à octets comptés.
(Vous ne pouvez la traiter en tant que chaîne terminée par une valeur nulle si
les valeurs du champ peuvent contenir des données binaires, car de telles valeurs
peuvent contenir elles-mêmes des octets nuls.) Les lignes sont obtenues en appelant
mysql_fetch_row()
.
-
MYSQL_FIELD
-
Cette structure contient des informations à propos du champ, tel que son nom,
son type, et sa taille. Ses membres sont décrit en plus de détails ici.
Vous pouvez obtenir une structure
MYSQL_FIELD
pour chaque champ en
appelant plusieurs fois
mysql_fetch_field()
. Les valeurs des champs ne
font pas partie de la structure; elles sont contenues dans une structure
MYSQL_ROW
.
-
MYSQL_FIELD_OFFSET
-
C'est une représentation sûre des types pour les index dans une liste de
champs MySQL. (Utilisés par
mysql_field_seek()
.) Les index sont des
numéros de champs, dans une ligne, commençant à zéro.
-
my_ulonglong
-
Le type utilisé pour le nombre de lignes et pour
mysql_affected_rows()
,
mysql_num_rows()
, et
mysql_insert_id()
. Ce type fournit une échelle
allant de
0
à
1.84e19
.Sur quelques systèmes, essayer d'écrire la valeur d'un type
my_ulonglong
ne fonctionnera pas. Pour écrire une telle valeur, convertissez là en
unsigned long
et utilisez un format d'impression
%lu
. Exemple :
printf ("Nombre de lignes : %lu\n", (unsigned long) mysql_num_rows(result));
|
La structure
MYSQL_FIELD
contient les membres listés ici :
-
char * name
-
Le nom du champ, une chaîne terminée par une valeur nulle.
-
char * table
-
Le nom de la table contenant ce champ, s'il n'est pas calculé.
Pour les champs calculés, la valeur de
table
est une chaîne vide.
-
char * def
-
La valeur par défaut de ce champ, en tant que chaîne terminée par une valeur nulle.
Ce n'est définit que si vous utilisez
mysql_list_fields()
.
-
enum enum_field_types type
-
Le type du champ.
La valeur de
type
peut être l'une des suivantes :
Valeur de type
|
Description du type
|
FIELD_TYPE_TINY
|
Champ
TINYINT
|
FIELD_TYPE_SHORT
|
Champ
SMALLINT
|
FIELD_TYPE_LONG
|
Champ
INTEGER
|
FIELD_TYPE_INT24
|
Champ
MEDIUMINT
|
FIELD_TYPE_LONGLONG
|
Champ
BIGINT
|
FIELD_TYPE_DECIMAL
|
Champ
DECIMAL
ou
NUMERIC
|
FIELD_TYPE_FLOAT
|
Champ
FLOAT
|
FIELD_TYPE_DOUBLE
|
Champ
DOUBLE
ou
REAL
|
FIELD_TYPE_TIMESTAMP
|
Champ
TIMESTAMP
|
FIELD_TYPE_DATE
|
Champ
DATE
|
FIELD_TYPE_TIME
|
Champ
TIME
|
FIELD_TYPE_DATETIME
|
Champ
DATETIME
|
FIELD_TYPE_YEAR
|
Champ
YEAR
|
FIELD_TYPE_STRING
|
Champ chaîne de caractères (
CHAR
ou
VARCHAR
)
|
FIELD_TYPE_VAR_STRING
|
Champ
VARCHAR
|
FIELD_TYPE_BLOB
|
Champ
BLOB
ou
TEXT
(utilisez
max_length
pour déterminer la taille maximale)
|
FIELD_TYPE_SET
|
Champ
SET
|
FIELD_TYPE_ENUM
|
Champ
ENUM
|
FIELD_TYPE_NULL
|
Champ de type
NULL
|
FIELD_TYPE_CHAR
|
Désapprouvé, utilisez
FIELD_TYPE_TINY
à la place
|
Vous pouvez utiliser la macro
IS_NUM()
pour tester si un champ est
de type numérique ou non. Passez la valeur de
type
à
IS_NUM()
et elle sera évaluée à TRUE si le champ est numérique :
if (IS_NUM(field->type)) printf("Le champ est numérique\n");
|
-
unsigned int length
-
La taille du champ, comme spécifié dans la définition de la table.
-
unsigned int max_length
-
La longueur maximale du champ pour le jeu de résultats (la taille de la plus longue
valeur de champ actuellement dans le jeu de résultat). Si vous utilisez
mysql_store_result()
ou
mysql_list_fields()
, cela contient la longueur
maximale pour le champ. Si vous utilisez
mysql_use_result()
, la valeur de cette
variable est zéro.
-
unsigned int flags
-
Les différents attributs sous forme de bits pour le champ. La valeur de
flags
peut avoir zéro
ou plusieurs de ces bits suivants activés :
Valeur d'attribut
|
Description d'attribut
|
NOT_NULL_FLAG
|
Le champ ne peut être
NULL
|
PRI_KEY_FLAG
|
Le champ fait parti d'une clef primaire
|
UNIQUE_KEY_FLAG
|
Le champ fait parti d'une clef unique
|
MULTIPLE_KEY_FLAG
|
Le champ fait parti d'une clef non-unique
|
UNSIGNED_FLAG
|
Le champ possède l'attribut
UNSIGNED
|
ZEROFILL_FLAG
|
Le champ possède l'attribut
ZEROFILL
|
BINARY_FLAG
|
Le champ possède l'attribut
BINARY
|
AUTO_INCREMENT_FLAG
|
Le champ possède l'attribut
AUTO_INCREMENT
|
ENUM_FLAG
|
Le champ est un
ENUM
(désapprouvé)
|
SET_FLAG
|
Le champ est un
SET
(désapprouvé)
|
BLOB_FLAG
|
Le champ est un
BLOB
ou
TEXT
(désapprouvé)
|
TIMESTAMP_FLAG
|
Le champ est un
TIMESTAMP
(désapprouvé)
|
L'utilisation des attributs
BLOB_FLAG
,
ENUM_FLAG
,
SET_FLAG
, et
TIMESTAMP_FLAG
est désapprouvé car ils indiquent un type de champ plutôt
qu'un attribut de type de champ. Il est préférable de tester
field->type
avec
FIELD_TYPE_BLOB
,
FIELD_TYPE_ENUM
,
FIELD_TYPE_SET
, ou
FIELD_TYPE_TIMESTAMP
à la place.
L'exemple suivant illustre une utilisation typique de la valeur de
flags
:
if (field->flags & NOT_NULL_FLAG) printf("Le champ ne peut être nul\n");
|
Vous pouvez utiliser les différentes macros ci-dessous pour déterminer le statut
booléen de la valeur de l'attribut :
Statut de l'attribut
|
Description
|
IS_NOT_NULL(flags)
|
Vrai si le champ est défini en tant que
NOT NULL
|
IS_PRI_KEY(flags)
|
Vrai si le champ est une clef primaire
|
IS_BLOB(flags)
|
Vrai si le champ est un
BLOB
ou
TEXT
(désapprouvé; tester plutôt
field->type
)
|
-
unsigned int decimals
-
Le nombre de décimales pour les champs numériques.
|