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.6 Présentation des fonctions de l'interface C
Note :
les fonctions pour les commandes préparées est toujours
en cours de développement. Les informations de cette section sont destinées
aux premiers utilisateurs mais il faut être conscient que l'API peut changer.
Certains changements sont incompatibles avec MySQL 4.1.2.
Voyez Description des fonctions C de commandes préparées pour plus de détails.
Voici les fonctions disponibles pour les commandes préparées. Elles
sont listées ici et détailles plus loin.
Description des fonctions C de commandes préparées .
Fonction
|
Description
|
mysql_stmt_init()
|
Alloue la mémoire pour une structure
MYSQL_STMT
et l'initialise. |
mysql_stmt_bind_param()
|
Associe un buffer avec une variable de requêtes, dans une commande préparée. |
mysql_stmt_bind_result()
|
Lie les buffers de l'application avec les colonnes d'un résultat. |
mysql_stmt_execute()
|
Exécute une commande préparée. |
mysql_stmt_fetch()
|
Lit la prochaine ligne de données dans le résultat, et retourne toutes les
données des colonnes liées. |
mysql_stmt_fetch_column()
|
Lit les données d'une seule colonne, dans le résultat. |
mysql_stmt_result_metadata()
|
Retourne les meta-données de la commande préparée, sous forme d'un jeu de résultat. |
mysql_stmt_param_count()
|
Retourne le nombre de paramètres d'une commande préparée. |
mysql_stmt_param_metadata()
|
Retourne les meta-données des paramètres, sous forme d'un jeu de résultat. |
mysql_stmt_prepare()
|
Prépare une chaîne SQL pour l'exécution. |
mysql_stmt_send_long_data()
|
Envoie de grandes données par parties. |
mysql_stmt_affected_rows()
|
Retourne le nombre de lignes modifiées, effacées ou insérée dans la dernière requête
UPDATE
,
DELETE
ou
INSERT
. |
mysql_stmt_insert_id()
|
Retourne l'identifiant généré par la colonne
AUTO_INCREMENT
de la dernière
commande préparée. |
mysql_stmt_close()
|
Libère une commande préparée de la mémoire. |
mysql_stmt_data_seek()
|
Se place à une numéro de ligne arbitraire dans un jeu de résultat. |
mysql_stmt_errno()
|
Retourne le numéro d'erreur de la dernière requête. |
mysql_stmt_error()
|
Retourne le message d'erreur de la dernière requête. |
mysql_stmt_free_result()
|
Libère les ressources allouées pour la commande. |
mysql_stmt_num_rows()
|
Retourne le nombre total de lignes dans un jeu de résultat bufferisé. |
mysql_stmt_reset()
|
Remet à zéro les buffers de la commande, sur le serveur. |
mysql_stmt_row_seek()
|
Se place à un numéro de ligne, dans un résultat de commande,
en utilisant la valeur retournée par
mysql_stmt_row_tell()
. |
mysql_stmt_row_tell()
|
Retourne la position du curseur de ligne de la commande. |
mysql_stmt_sqlstate()
|
Retourne le code d'erreur SQLSTATE de la dernière opération. |
mysql_stmt_store_result()
|
Lit tout le résultat dans le client. |
mysql_stmt_attr_set()
|
Modifie un attribut d'une commande préparée. |
mysql_stmt_attr_get()
|
Lit la valeur d'un attribut d'une commande préparée. |
Appelez
mysql_prepare()
pour préparer et initialiser la commande,
puis appelez
mysql_bind_param()
pour fournir les données des paramètres,
enfin appelez
mysql_execute()
pour exécuter la requête. Vous pouvez
répéter
mysql_execute()
en modifiant les valeurs des paramètres des
buffers respectifs via
mysql_bind_param()
.
Dans le cas où la requête est une commande
SELECT
, ou toute autre commande
qui retourne un résultat, alors
mysql_prepare()
va aussi retourner les
méta données de résultat sous la forme d'une structure
MYSQL_RES
avec
mysql_prepare_result()
.
Vous pouvez fournir les buffers de résultat avec
mysql_bind_result()
,
pour que
mysql_fetch()
lise automatiquement les résultats dans les buffers.
Cela est fait ligne par ligne.
Vous pouvez aussi envoyer le texte ou les données binaires au serveur en utilisant
la fonction
mysql_stmt_send_long_data()
.
mysql_stmt_send_long_data()
.
Une fois que l'exécution de la commande est terminée, elle doit être
supprimée avec
mysql_stmt_close
pour que toute les ressources allouées
soient détruites.
Etapes d'exécution :
Pour préparer et exécuter une commande, l'application :
- appelle
mysql_prepare()
et passe une chaîne contenant la commande
SQL. Si la préparation réussi,
mysql_prepare()
retourne un pointeur de commande
valide.
- Si la requête a un résultat, alors
mysql_prepare_result
retourne les méta informations de résultat.
- spécifie les valeurs de tous les paramètres de
mysql_bind_param
.
Tous les paramètres doivent être fournis, sinon, cela générera une erreur,
ou engendrera des résultats inattendus.
- appelle
mysql_execute()
pour exécuter la requête.
- Répète les étapes 2 et 3 autant que nécessaire, en modifiant les valeurs des
paramètres, et en exécutant à nouveau la commande.
- Lie les buffers de données aux lignes de résultat, si la commande
génère un résultat, en utilisant
mysql_bind_result()
.
- Lit les données dans les buffers, ligne par ligne, en appelant
mysql_fetch()
jusqu'à ce qu'il n'y ait plus de lignes.
Lorsque
mysql_prepare()
est appelé, dans le protocole client/serveur MySQL :
-
Le serveur analyse la requête et envoie le statut OK au client en
lui assignant un identifiant de commande. Il renvoie aussi le nombre
total de paramètres, le nombre de colonnes et des meta-informations
si un résultat est attendu. La syntaxe et la sémantique de la requête
sont vérifiés durant cet appel.
-
Le client utilise cet identifiant de commande pour les exécutions
ultérieures, pour que le serveur identifie la commande dans le pool de
commandes. Désormais, le client alloue un pointeur de commande avec
cet identifiant, et le retourne à l'application.
Lorsque
mysql_execute()
est appelé, avec le protocole client/serveur MySQL :
-
Le client utilise le pointeur de commande et envoie les paramètres
au serveur.
-
Le serveur identifie la commande en utilisant l'identifiant, et remplace
les marqueurs de paramètres par leur valeur, puis il exécute la requête.
Si cela conduit à un résultat, il est retourné au client, ou bien un
statut OK, indiquant le nombre total de ligne affecté est retourné.
Lorsque
mysql_fetch()
est appelé, dans le protocole client/serveur MySQL :
-
Le client lit les données dans le paquet, ligne par ligne, et les place
dans les buffers de données, avec les conversions nécessaires. Si le type
de buffer de l'application est le même que le type de champs, alors les
conversions sont immédiates.
Vous pouvez lire les codes et messages d'erreur, ansi que les codes
d'erreur
SQLSTATE
avec les fonctions
mysql_stmt_errno()
,
mysql_stmt_error()
et
mysql_stmt_sqlstate()
, respectivement.
|