En utilisant le nouveau protocole binaire de MySQL 4.1 et plus
récent, vous pouvez envoyer et recevoir les données de type
(DATE
, TIME
,
DATETIME
et TIMESTAMP
)
avec la structure MYSQL_TIME
. Les membres de
cette structure sont décrits dans
Section 24.2.5, « Types de données de l'API C ».
Afin d'envoyer les données, il faut utiliser une requête
préparée avec la fonction mysql_prepare()
.
Avant d'appeler la fonction mysql_execute()
,
pour exécuter la commande, utilisez la procédure suivante pour
préparer chaque donnée :
Dans la structure MYSQL_BIND
, associée
aux données, assignez au membre
buffer_type
le type de données que vous
envoyez. Pour DATE
,
TIME
, DATETIME
, ou
TIMESTAMP
, utilisez
buffer_type
MYSQL_TYPE_DATE
,
MYSQL_TYPE_TIME
,
MYSQL_TYPE_DATETIME
, ou
MYSQL_TYPE_TIMESTAMP
, respectivement.
Donnez au membre buffer
de la structure
MYSQL_BIND
, l'adresse de la structure
MYSQL_TIME
dans laquelle vous avez
stocké votre valeur temporelle.
Remplissez les membres de la structure
MYSQL_TIME
qui sont adaptés au type de
données que vous passez.
Utilisez mysql_bind_param()
pour lier les
données à la requête. Puis, appelez
mysql_execute()
.
Pour lire des données temporelles, la procédure est similaire,
hormis le fait que vous donnez au membre
buffer_type
le type de donnée que vous
attendez, et que buffer
doit pointer sur
l'adresse de la structure MYSQL_TIME
qui va
recevoir les données retournées. Utilisez
mysql_bind_results()
pour lier les buffers à
la commande après avoir appelé
mysql_execute()
et avant de lire les
résultats.
Voici un exemple qui réalise l'insertion de données
DATE
, TIME
et
TIMESTAMP
. La variable
mysql
est supposée représenter une
connexion valide.
MYSQL_TIME ts; MYSQL_BIND bind[3]; MYSQL_STMT *stmt; strmov(query, "INSERT INTO test_table(date_field, time_field, timestamp_field) VALUES(?,?,?"); stmt= mysql_prepare(mysql, query, strlen(query))); /* configure les trois buffers pour les trois paramètres */ bind[0].buffer_type= MYSQL_TYPE_DATE; bind[0].buffer= (char *)&ts; bind[0].is_null= 0; bind[0].length= 0; .. bind[1]= bind[2]= bind[0]; .. mysql_bind_param(stmt, bind); /* Fournit les données à envoyer dans la structure ts */ ts.year= 2002; ts.month= 02; ts.day= 03; ts.hour= 10; ts.minute= 45; ts.second= 20; mysql_execute(stmt); ..
This is a translation of the MySQL Reference Manual that can be found at dev.mysql.com. The original Reference Manual is in English, and this translation is not necessarily as up to date as the English version.