MySQL入門之時間相關函數

黄舟
發布: 2017-01-19 15:46:17
原創
1192 人瀏覽過

二進位協定讓你可以使用MYSQL_TIME結構來傳送和接受日期和時間值(DATE、TIME、DATETIME和TIMESTAMP)。在25.2.5節,「C API預處理語句的資料類型」中,介紹了該結構的成員。

要想傳送臨時資料值,可使用mysql_stmt_prepare()建立預處理語句。然後,在呼叫mysql_stmt_execute()執行語句之前,可採用下述步驟設定每個臨時參數:

在與資料值相關的MYSQL_BIND結構中,將buffer_type成員設定為對應的類型,該類型指明了發送的臨時值類型。對於DATE、TIME、DATETIME或TIMESTAMP值,將buffer_type分別設定為MYSQL_TYPE_DATE、MYSQL_TYPE_TIME、MYSQL_TYPE_DATETIME或MYSQL_TYPE_TIMESTAMP。

將MYSQL_BIND結構的緩衝成員設定為用於傳遞暫存值的MYSQL_TIME結構的位址。

填入MYSQL_TIME結構的成員,使之與打算傳遞的臨時支的類型相符。

使用mysql_stmt_bind_param()將參數資料綁定到語句。然後可呼叫mysql_stmt_execute()。

要想檢索臨時值,可採用類似的步驟,但應將buffer_type成員設定為打算接受的值的類型,並將緩衝成員設為應將傳回值置於其中的MYSQL_TIME結構的位址。在呼叫mysql_stmt_execute()之後,並在取得結果之前,使用mysql_bind_results()將緩衝綁定到語句上。

具體看程式碼:

#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);
}
登入後複製

以上就是MySQL入門之時間相關函數的內容,更多相關內容請關注PHP中文網(www.php.cn)!


相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
最新問題
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板