Fonctions C de commandes préparées
<<<
Types de données de l'API C Présentation des fonctions de l'interface C
>>>

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.

<< Types de données de l'API C >>
Fonctions C de commandes préparées API MySQL C Présentation des fonctions de l'interface C