• mysql C api


    1.初始化一个链接结构。

    2.创建一个链接。

    3.执行查询。

    4.关闭链接。

    MYSQL* conn;

    首先,声明一个conn指针指向一个MYSQL结构体,这个结构体就是一个数据库连接句柄。

    conn = mysql_init(NULL);

    函数mysql_init将返回一个链接句柄。

     if (conn == NULL) {

         printf("Error %u: %s ", mysql_errno(conn), mysql_error(conn));

         exit(1);

     }

    函数mysql_real_connect建立一个到mysql数据库的链接。调用这个函数要提供 链接句柄、主机名、用户、密码等参数,最后四个参数依次是数据库名、端口、unix套接字和客户端标志。

    mysql_query()  不能传二进制BLOB字段,因为二进制信息中的会被误判为语句结束。

     mysql_real_query()  则可以。
    另外  mysql_real_query() 会比mysql_query() 略快一点儿。因为它不去检查你的SQL语句长度是多少。

    MYSQL_ROW mysql_fetch_row(MYSQL_RES *result)
    检索一个结果集合的下一行。当在mysql_store_result()之后使用时,如果没有更多的行可检索时,mysql_fetch_row()返回NULL。当在mysql_use_result()之后使用时,当没有更多的行可检索时或如果出现一个错误,mysql_fetch_row()返回NULL。
    在行中值的数量由mysql_num_fields(result)给出。如果row保存了从一个对用mysql_fetch_row()调用返回的值,指向该值的指针作为row[0]到row[mysql_num_fields(result)-1]来存取。在行中的NULL值由NULL指针指出。
    在行中字段值的长度可以通过调用mysql_fetch_lengths()获得。空字段和包含NULL的字段长度都是 0;你可以通过检查该值的指针区分他们。如果指针是NULL,字段是NULL;否则字段是空的。
    MYSQL_ROW row;
    unsigned int num_fields;
    unsigned int i;
    num_fields = mysql_num_fields(result);
    while ((row = mysql_fetch_row(result)))
    {
        unsigned long *lengths;
        lengths = mysql_fetch_lengths(result);
        for(i = 0; i < num_fields; i++)
        {
            printf("[%.*s] ", (int) lengths[i], row[i] ? row[i] : "NULL");
        }
        printf(" ");
    }
     

    mysql_close(conn);

    mysql_query()  不能传二进制BLOB字段,因为二进制信息中的会被误判为语句结束。

     mysql_real_query()  则可以。
    另外  mysql_real_query() 会比mysql_query() 略快一点儿。因为它不去检查你的SQL语句长度是多少。

  • 相关阅读:
    nodejs
    httpClient closeableHttpClient
    re(正则表达式)模块
    ConfigParser模块
    random和string模块
    常用文件操作模块json,pickle、shelve和XML
    time和datetime模块
    os、sys和shutil模块
    内建函数
    生成器、迭代器、装饰器
  • 原文地址:https://www.cnblogs.com/lc-cnblong/p/3591415.html
Copyright © 2020-2023  润新知