• c++操作mysql(详解)


    1.安装mysql

    具体安装看下面这个连接

    (18条消息) Mysql使用详解_@seven@的博客-CSDN博客

    2.接口介绍

    2.1.初始化函数

    MYSQL *mysql_init(MYSQL *mysql);

    mysql 可以传 NULL

    返回值:mysql句柄

    2.2设置连接选项配置

    int mysql_options(MYSQL *mysql, enum mysql_option option, const char *arg)

    描述

    可用于设置额外的连接选项,并影响连接的行为。可多次调用该函数来设置数个选项。

    应在mysql_init()之后、以及mysql_connect()或mysql_real_connect()之前调用mysql_options()。

    选项参量指的是你打算设置的选项。Arg参量是选项的值。如果选项是整数,那么arg应指向整数的值。

    如:

    mysql_options(m_mysql, MYSQL_OPT_RECONNECT, &reconnect);配合mysql_ping实现自动重连
    mysql_options(m_mysql, MYSQL_SET_CHARSET_NAME, “utf8mb4”);//编码设置

    2.3连接数据库

    MYSQL *mysql_real_connect(MYSQL *mysql, const char *host, const char *user,
    const char *passwd, const char *db, unsigned int port,
    const char *unix_socket, unsigned long client_flag)

    参数介绍

    • mysql 初始化的句柄指针
    • host 主机地址
    • user 用户名 – mysql数据库 root
    • passwd 用户的密码
    • db 要连接的数据库
    • port 端口 一般填0,mysql默认端口 3306
    • unix_socket 本地套接字 ,一般填NULL
    • client_flag 连接标志 一般填0

    返回值:成功返回 连接句柄,失败返回 NULL

    2.4释放连接资源

    mysql_close(MYSQY* conn);

    释放conn连接资源

    2.5数据库操作

    int mysql_query(MYSQL *mysql, const char *query)

    参数介绍:

    • mysql 连接句柄
    • query 执行的sql

    反回值:

    • 成功 返回 0
    • 失败 返回 非0

    2.6获得结果集的函数

    MYSQL_RES *mysql_store_result(MYSQL *mysql)

    返回值

    如果读取结果集失败,mysql_store_result()还会返回Null指针。

    通过检查mysql_error()是否返回非空字符串,mysql_errno()是否返回非0值,或mysql_field_count()是否返回0,可以检查是否出现了错误。

    如:

    MYSQL_RES* res = mysql_store_result(m_mysql);

    2.7释放结果集

    void mysql_free_result(MYSQL_RES *result)

    如:

    mysql_free_result(m_res);
    m_res = NULL;

    2.8取出一行信息

    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)给出。如果行中保存了调用mysql_fetch_row()返回的值,将按照row[0]到row[mysql_num_fields(result)-1],访问这些值的指针。行中的NULL值由NULL指针指明。

    可以通过调用mysql_fetch_lengths()来获得行中字段值的长度。对于空字段以及包含NULL的字段,长度为0。通过检查字段值的指针,能够区分它们。如果指针为NULL,字段为NULL,否则字段为空。

    返回值

    下一行的MYSQL_ROW结构。如果没有更多要检索的行或出现了错误,返回NULL。

    2.9.获取查询的显示列的长度

    unsigned int mysql_num_fields(MYSQL_RES *result)

    描述:返回结果集中的列数。

    注意,你可以从指向结果集的指针或指向连接句柄的指针获得行数。如果mysql_store_result()或mysql_use_result()返回NULL,应使用连接句柄(因而没有结果集指针)。在该情况下,可调用mysql_field_count()来判断mysql_store_result()是否生成了非空结果。这样,客户端程序就能采取恰当的行动,而不需要知道查询是否是SELECT语句(或类似SELECT的语句)。在下面的示例中,介绍了执行该操作的方式。

    行数直接判断MYSQL_ROW mysql_fetch_row(MYSQL_RES *result)是否为空

    如:

    int num_fields = mysql_num_fields(m_res);

    2.10.获取列信息

    MYSQL_FIELD *mysql_fetch_field(MYSQL_RES *result)

    描述

    返回采用MYSQL_FIELD结构的结果集的列。重复调用该函数,以检索关于结果集中所有列的信息。未剩余字段时,mysql_fetch_field()返回NULL。

    每次执行新的SELECT查询时,将复位mysql_fetch_field(),以返回关于第1个字段的信息。调用mysql_field_seek()也会影响mysql_fetch_field()返回的字段。

    如果调用了mysql_query()以在表上执行SELECT,但未调用mysql_store_result(),如果调用了mysql_fetch_field()以请求BLOB字段的长度,MySQL将返回默认的Blob长度(8KB)。之所以选择8KB是因为MySQL不知道BLOB的最大长度。应在日后使其成为可配置的。一旦检索了结果集,field->max_length将包含特定查询中该列的最大值的长度。

    返回值

    当前列的MYSQL_FIELD结构。如果未剩余任何列,返回NULL。

  • 相关阅读:
    C#委托初步
    将asp.net core程序部署到Linux服务器上(1)
    DSPE-PEG-GE11,GE11-PEG-DSPE,磷脂-聚乙二醇-靶向多肽GE11
    记一次php反序列化漏洞中的POPchain和POC构造实战
    Java过滤器Filter讲解
    部署轻量级Gitea替代GitLab进行版本控制(一)
    记使用docker部署项目出现问题
    手撕Vue-数据驱动界面改变下
    【MySQL】数据库的约束
    RabbitMQ—持久化
  • 原文地址:https://blog.csdn.net/m0_67401055/article/details/126031219