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

Posted Linux猿

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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

以上是关于MySQL 数据库 C/C++ 常用函数的主要内容,如果未能解决你的问题,请参考以下文章

Excel五个常用的“IFS”结尾的多条件统计函数

Mysql 常用时间函数(上)

MySQL整理

MySql的基本操作以及以后开发经常使用的常用指令

C语言 strcpy 函数

C语言 strcpy_s 函数