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.5 Types de données de l'API C
Note :
les requêtes préparées sont susceptibles d'être revues.
Les informations ci-dessous sont destinées aux nouveaux utilisateurs,
mais soyez prévenus qu'elles peuvent changer.
Des modifications incompatibles ont été faites en MySQL 4.1.2.
Voyez Description des fonctions C de commandes préparées pour plus de détails.
Les requêtes préparées utilisent
principalement les deux structures
MYSQL_STMT
et
MYSQL_BIND
:
-
MYSQL_STMT
-
Cette structure représente un pointeur de commande sur une commande préparée.
Elle sert pour toutes les fonctions liées aux commandes.La commande est initialisée lorsque la requête est préparée en utilisant
mysql_prepare()
.
La structure est utilisées par toutes les fonctions ultérieures,
liées au commandes préparées.
La structure
MYSQL_STMT
n'a pas de membres utilisables par l'application.
Une connexion peut avoir de multiples pointeurs de commandes, et la limite
ne dépend que des ressources systèmes.
-
MYSQL_BIND
-
Cette structure est utilisée pour lier les paramètres avec des buffers,
avec
mysql_bind_param()
, pour utilisation avec
mysql_execute()
,
ainsi que pour lier les résultats avec des buffers via
mysql_bind_result()
m,
lors de la lecture de données avec
mysql_fetch()
.
La structure
MYSQL_BIND
contient les membres suivants :
Chacun est utilisé pour la lecture et l'écriture, mais leur objectifs
et parfois différent, en fonction du sens de communication.
-
enum enum_field_types buffer_type
-
Le type de buffer. Les valeurs possibles pour
buffer_type
sont listées plus loin
dans cette section. Pour l'envoi,
buffer_type
indique le type de valeur que vous
allez fournir, lors de l'association de paramètres. Pour la réception, cela indique
le type de valeur que vous pouvez lire dans le buffer de résultat.
-
void *buffer
-
Pour l'envoi, c'est un pointeur sur le buffer où sont stockées les valeurs
du paramètre de la requête. Pour la réception, c'est un pointeur sur la valeur
retournée. Pour les types numériques,
buffer
pointe sur une variable
avec le bon type C. Si vous associez la variable avec une colonne qui a un
attribut
UNSIGNED
, la variable doit être de type C
unsigned
.
Pour les colonnes de type date,
buffer
doit pointer sur une structure
MYSQL_TIME
. Pour les caractères et les chaînes binaires,
buffer
doit pointer sur un buffer de caractères.
-
unsigned long buffer_length
-
La taille de
*buffer
en octets. Pour les caractères et les données binaires C,
buffer_length spécifie la taille de
*buffer
à utiliser comme paramètre
si il est utilisé avec
mysql_bind_param()
, ou la taille lue dans
le résultat si il est utilisé avec
mysql_bind_result()
.
-
long *length
-
Un pointeur sur une variable
unsigned long
qui indique le
nombre réel d'octets stockés dans
*buffer
.
length
est utilisé pour les données de type caractères ou
binaires. Pour l'envoi de données,
length
point sur une
variable
unsigned long
qui indique la taille des
valeurs des paramètres stockés dans
*buffer
; cette valeur
est utilisée par
mysql_execute()
.
Si
length
est un pointeur null, le protocole suppose que les
données caractères ou binaires sont terminées par null.
Pour la lecture,
mysql_fetch()
place la taille de la valeur
de la colonne retournée dans la variable
length
.
length
est ignorée pour les valeurs numériques et temporelles,
car la taille de ces valeurs sont déterminées par la valeur de
buffer_type
.
-
my_bool *is_null
-
Ce membre pointe sur une variable
my_bool
qui est true si la valeur
est
NULL
, et false si elle n'est pas
NULL
. Pour l'envoi, donnez à
*is_null
la valeur de true pour indiquer que la valeur que vous émettez
est
NULL
. Pour la réception, cette valeur sera true après avoir lu une
ligne si le résultat est
NULL
.
-
MYSQL_TIME
-
Cette structure est utilisée pour écrire et lire des données de type
DATE, TIME et TIMESTAMP, directement avec le serveur.
Cela se fait en donnant au membre
buffer_type
d'une structure
MYSQL_BIND
un des types temporels, et en donnant au membre
buffer
un pointeur sur une
structure
MYSQL_TIME
.
La structure
MYSQL_TIME
contient les membres suivants :
-
unsigned int year
-
L'année.
-
unsigned int month
-
Le mois de l'année.
-
unsigned int day
-
Le jour du mois.
-
unsigned int hour
-
L'heure du jour.
-
unsigned int minute
-
La minute de l'heure.
-
unsigned int second
-
La seconde de la minute.
-
my_bool neg
-
Un booléen pour indiquer que le temps est négatif.
-
unsigned long second_part
-
La partie décimale de la seconde.
Ce membre est actuellement inutilisé.
Seuls les membres d'une structure
MYSQL_TIME
qui s'appliquent
à une valeur sont utilisés :
les éléments
year
,
month
et
day
sont utilisés
pour les types
DATE
,
DATETIME
et
TIMESTAMP
;
les éléments
hour
,
minute
et
second
sont utilisés
por les types
TIME
,
DATETIME
et
TIMESTAMP
.
Gestion en C des dates et heures .
La table suivante montre les valeurs permises, qui peuvent être spécifiées
dans le membre
buffer_type
des structures
MYSQL_BIND
. La
table montre aussi les types SQL qui correspondent à chaque type
de
buffer_type
, et, pour les types numériques et temporels,
le type C correspondant.
buffer_type
Valeur
|
Type SQL
|
Type C
|
MYSQL_TYPE_TINY
|
TINYINT
|
char
|
MYSQL_TYPE_SHORT
|
SMALLINT
|
short int
|
MYSQL_TYPE_LONG
|
INT
|
long int
|
MYSQL_TYPE_LONGLONG
|
BIGINT
|
long long int
|
MYSQL_TYPE_FLOAT
|
FLOAT
|
float
|
MYSQL_TYPE_DOUBLE
|
DOUBLE
|
double
|
MYSQL_TYPE_TIME
|
TIME
|
MYSQL_TIME
|
MYSQL_TYPE_DATE
|
DATE
|
MYSQL_TIME
|
MYSQL_TYPE_DATETIME
|
DATETIME
|
MYSQL_TIME
|
MYSQL_TYPE_TIMESTAMP
|
TIMESTAMP
|
MYSQL_TIME
|
MYSQL_TYPE_STRING
|
CHAR
|
|
MYSQL_TYPE_VAR_STRING
|
VARCHAR
|
|
MYSQL_TYPE_TINY_BLOB
|
TINYBLOB/TINYTEXT
|
|
MYSQL_TYPE_BLOB
|
BLOB/TEXT
|
|
MYSQL_TYPE_MEDIUM_BLOB
|
MEDIUMBLOB/MEDIUMTEXT
|
|
MYSQL_TYPE_LONG_BLOB
|
LONGBLOB/LONGTEXT
|
|
Des conversions implicites de type peuvent survenir dans les deux directions
de communication.
|