Maison >base de données >tutoriel mysql >Fonctions liées au temps pour démarrer avec MySQL

Fonctions liées au temps pour démarrer avec MySQL

黄舟
黄舟original
2017-01-19 15:46:171211parcourir

Le protocole binaire vous permet d'envoyer et de recevoir des valeurs de date et d'heure (DATE, TIME, DATETIME et TIMESTAMP) en utilisant la structure MYSQL_TIME. Les membres de cette structure sont décrits dans la Section 25.2.5, « Types de données pour les instructions préparées par l'API C ».

Pour envoyer des valeurs de données temporaires, vous pouvez utiliser mysql_stmt_prepare() pour créer des instructions préparées. Ensuite, avant d'appeler mysql_stmt_execute() pour exécuter l'instruction, vous pouvez utiliser les étapes suivantes pour définir chaque paramètre temporaire :

Dans la structure MYSQL_BIND associée à la valeur des données, définissez le membre buffer_type sur le type correspondant, qui spécifie le type de valeur temporaire envoyée. Pour les valeurs DATE, TIME, DATETIME ou TIMESTAMP, définissez buffer_type sur MYSQL_TYPE_DATE, MYSQL_TYPE_TIME, MYSQL_TYPE_DATETIME ou MYSQL_TYPE_TIMESTAMP respectivement.

Définissez le membre tampon de la structure MYSQL_BIND sur l'adresse de la structure MYSQL_TIME utilisée pour transmettre les valeurs temporaires.

Remplissez les membres de la structure MYSQL_TIME en fonction du type de support temporaire que vous comptez transmettre.

Utilisez mysql_stmt_bind_param() pour lier les données de paramètre à une instruction. Mysql_stmt_execute() peut alors être appelé.

Pour récupérer une valeur temporaire, suivez des étapes similaires, mais définissez le membre buffer_type sur le type de valeur que vous avez l'intention d'accepter, et définissez le membre buffer sur l'adresse de la structure MYSQL_TIME dans laquelle la valeur de retour doit être placé. Après avoir appelé mysql_stmt_execute() et avant d'obtenir les résultats, utilisez mysql_bind_results() pour lier le tampon à l'instruction.

Regardez le code spécifiquement :

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <dlfcn.h>
#include <mysql/mysql.h>
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <string.h>
#include <errno.h>
#include <termios.h>
#include <mysql/mysql.h>
int main()
{
    int         ret = 0, status = 0;
    MYSQL       *mysql;
    MYSQL_RES   *result;
    mysql =mysql_init(NULL);
    mysql =mysql_real_connect(mysql, "localhost", "root", "123456", "mydb2", 0, NULL, CLIENT_MULTI_STATEMENTS );
    if (mysql == NULL)
    {
        ret = mysql_errno(mysql);
        printf("%s", mysql_error(mysql));
        printf("func mysql_real_connect() err :%d\n", ret);
        return ret;
    }
    else
    {
        printf(" ok......\n");
    }
    MYSQL_TIME  ts;
    MYSQL_BIND  bind[3];
    MYSQL_STMT  *stmt;
     //注意:
     // 创建的表语句
     // create table test_table (date_field date,  time_field time,  timestamp_field timestamp );
    char query[1024] = "INSERT INTO test_table(date_field, time_field, timestamp_field) VALUES(?,?,?)";
    stmt = mysql_stmt_init(mysql);
    if (!stmt)
    {
        fprintf(stderr, " mysql_stmt_init(), out of memory\n");
        exit(0);
    }
    if (mysql_stmt_prepare(stmt, query, strlen(query)))
    {
        fprintf(stderr, "\n mysql_stmt_prepare(), INSERT failed");
        fprintf(stderr, "\n %s", mysql_stmt_error(stmt));
        exit(0);
    }
    /* set up input buffers for all 3 parameters */
    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_stmt_bind_param(stmt, bind);
    /* supply the data to be sent in the ts structure */
    ts.year= 2002;
    ts.month= 02;
    ts.day= 03;
    ts.hour= 10;
    ts.minute= 45;
    ts.second= 20;
    mysql_stmt_execute(stmt);
    // Close the statement //
    if (mysql_stmt_close(stmt))
    {
      fprintf(stderr, " failed while closing the statement\n");
      fprintf(stderr, " %s\n", mysql_stmt_error(stmt));
      exit(0);
    }
    mysql_close(mysql);
}

Ce qui précède est le contenu des fonctions liées au temps pour démarrer avec MySQL. Pour plus de contenu connexe, veuillez faire attention au site Web PHP chinois. (www.php.cn) !


Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn