MySQL 数据库 C/C++ 常用函数


🎈 作者:Linux猿

🎈 简介:CSDN博客专家🏆,华为云享专家🏆,Linux、C/C++、云计算、物联网、面试、刷题、算法尽管咨询我,关注我,有问题私聊!

🎈 关注专栏: 数据结构和算法成神路【精讲】优质好文持续更新中……🚀🚀🚀

🎈 欢迎小伙伴们点赞👍、收藏⭐、留言💬


目录

一、MySQL C/C++ 常用接口

1.1 mysql_init

1.2 mysql_real_connect

1.3 mysql_close

1.4 mysql_set_character_set

1.5 mysql_query

1.6 mysql_store_result

1.7 mysql_fetch_row

1.8 mysql_real_query

二、测试用例


本篇文章对 MySQL C/C++ 常用接口进行讲解,包括:连接数据库、插入、更新、查询等操作。

一、MySQL C/C++ 常用接口

1.1 mysql_init

MYSQL *mysql_init(MYSQL *mysql)

分配或初始化一个适用于 mysql_real_connect() 的 MYSQL 对象,用于连接 MySQL 服务端。如果传入 NULL,会自动分配一个 MySQL 对象。

1.2 mysql_real_connect

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 服务器的连接。在执行任何其他需要有效 MYSQL 连接处理程序结构的 API 函数之前,客户端程序必须成功连接到服务器。

1.3 mysql_close

void mysql_close(MYSQL *mysql)

 关闭先前打开的连接。 如果处理程序是由 mysql_init() 或 mysql_connect() 自动分配的,则 mysql_close() 还会释放 mysql 指向的连接处理程序。不要在处理程序关闭后使用它。

1.4 mysql_set_character_set

int mysql_set_character_set(MYSQL *mysql, const char *csname)

该函数用于设置当前连接的默认字符集。字符串 csname 指定一个有效的字符集名称。

1.5 mysql_query

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

 执行以 null 结尾的字符串 stmt_str 指向的 SQL 语句。返回 0 表示成功,否则执行出错。

1.6 mysql_store_result

MYSQL_RES *mysql_store_result(MYSQL *mysql)

 在调用 mysql_real_query() 或 mysql_query() 之后,必须为每个成功生成结果集的语句(SELECT、SHOW、DESCRIBE、EXPLAIN、CHECK TABLE 等)调用 mysql_store_result() 或 mysql_use_result()。在完成结果集后,您还必须调用 mysql_free_result()。

1.7 mysql_fetch_row

MYSQL_ROW mysql_fetch_row(MYSQL_RES *result)

检索结果集的下一行。当在 mysql_store_result() 或 mysql_store_result_nonblocking() 之后使用时,如果没有更多的行要检索,mysql_fetch_row() 将返回 NULL。当在 mysql_use_result() 之后使用时,如果没有更多的行可检索或发生错误,mysql_fetch_row() 将返回 NULL。

1.8 mysql_real_query

int mysql_real_query(MYSQL *mysql, const char *stmt_str, unsigned long length)

执行stmt_str指向的 SQL 语句。 通常,字符串必须由单个 SQL 语句组成,不带终止分号 (;) 或 \g。 如果启用了多语句执行,则该字符串可以包含多个以分号分隔的语句。

mysql_query() 不能用于包含二进制数据的语句;你必须改用 mysql_real_query() 。(二进制数据可能包含 \0 字符,mysql_query() 将其解释为语句字符串的结尾。)此外,mysql_real_query() 比 mysql_query() 更快,因为它不在语句字符串上调用 strlen()。 

二、测试用例

下面就来演示下上面的函数的使用,如下所示。

#include <iostream>
#include <mysql.h>
#include <sstream>
using namespace std;

#define HOST "127.0.0.1"
#define USER "root"
#define PASSWORD "qwer1234"
#define DATABASE "mysqltest"
#define PORT 3306

int main()
{
    // 初始化 MYSQL 对象
    MYSQL *conn = mysql_init(nullptr);
    //连接 MySQL 数据库
    if (!mysql_real_connect(conn, HOST, USER, PASSWORD, DATABASE, PORT, NULL, 0)) {
		cout<<"Error connecting to database: "<<mysql_error(conn)<<endl;
		exit(1);
	}

    // 设置字符集
	if (mysql_set_character_set(conn, "gbk") != 0) {
        cout<<__LINE__<<" : error : "<<mysql_error(conn)<<endl;
        exit(1);
    }

    const char * query = "insert into student(name, height) values('test13', '193');";

    int ret = mysql_query(conn, query);
    if (!ret) {
        cout<<"插入数据成功!"<<endl;
    } else {
        cout<<"Error: "<<mysql_error(conn)<<endl;
        cout<<"插入数据失败!"<<endl;
    }

    query = "select * from student;";
    ret = mysql_query(conn, query);
    MYSQL_RES *retSet = mysql_store_result(conn);
    MYSQL_ROW row;
    while ((row = mysql_fetch_row(retSet)) != nullptr) {
        cout<<"id = "<<row[0]<<"  name = "<<row[1]<<"  height = "<<row[2]<<endl;
    }

    // 关闭连接
    mysql_close(conn);
    return 0;
}

输出结果为:

插入数据成功!
id = 1  name = test1  height = 181
id = 2  name = test2  height = 182
id = 3  name = test3  height = 183
id = 4  name = test4  height = 184
id = 5  name = test5  height = 185
id = 6  name = test6  height = 186
id = 7  name = test7  height = 187
id = 8  name = test8  height = 188
id = 9  name = test9  height = 189
id = 10  name = test10  height = 180
id = 11  name = test11  height = 191
id = 12  name = test12  height = 192
id = 13  name = test13  height = 193

🎈 感觉有帮助记得「一键三连支持下哦!有问题可在评论区留言💬,感谢大家的一路支持!🤞猿哥将持续输出「优质文章回馈大家!🤞🌹🌹🌹🌹🌹🌹🤞


参考链接:

[1] MySQL :: MySQL 8.0 C API Developer Guide :: 4 C API Function Reference

  • 2
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Linux猿

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值