C++怎么连接mysql数据库并读取数据

发布时间:2023-05-06 16:16:58 作者:iii
来源:亿速云 阅读:140

本文小编为大家详细介绍“C++怎么连接mysql数据库并读取数据”,内容详细,步骤清晰,细节处理妥当,希望这篇“C++怎么连接mysql数据库并读取数据”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。

1、需要包含mysql API的头文件

如果需要连接都本地的mysql数据库,前提是本地要已经安装了mysql数据库。这里要用到一些mysql的API,比如连接数据库、执行查询语句等操作,这些接口都包含在下面的头文件中:

#include <mysql/mysql.h>

2、连接mysql具体步骤

这里大致可以分为四个主要步骤:

1、连接mysql数据库

1、连接mysql数据库

显然,如果要获取mysql数据中数据,首先要连接数据库,获得一个可以操作数据库的句柄。

2、执行查询语句,即选择我们需要的数据

就是执行查询语句,查询我们需要的数据。查询到的数据会保存在一个叫做结果集的地方。

3、从结果集中获取需要的数据

利用相关的接口函数,从结果集中获取每一行各地字段的数据。

4、从结果集中提取每行各个字段的信息

5、释放资源,包括结果集合mysql句柄

下面具体讲解一下几个必须用到的关键接口函数。

2.1 mysql_real_connect

该函数用于连接运行在主机上的数据库引擎,如果连接成功,将获得可以操作数据库的句柄,否则返回NULL指针。

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
						)

该函数参数众多,各个参数含义如下:

2.2 mysql_query 或 mysql_real_query

该函数用于向数据库发送一条查询命令,并让数据库执行。返回0表示查询成功,否则失败。

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

或者:

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

上面两个函数的区别在于:

2.3 获取结果集mysql_store_result

该函数返回查询成功的结果集,如果失败则返回NULL

MYSQL_RES *mysql_store_result(MYSQL *mysql)

2.4 显示结果集中每行数据

该函数的入参为步骤(3)中返回的结果集。每次调用时,返回结果集中的下一行数据,并将指针向后移动一行,如果没有下一行数据,返回NULL。
可以用mysql_num_fields(result)计算结果集中行的数量,mysql_num_fields(result)可以计算列的数量。假如row为某一行的信息,那么row[0]、row[1]。。。依次该行的各个字段信息。

MYSQL_ROW mysql_fetch_row(MYSQL_RES *result)

3、一个编程示例

这里的环境为linux系统。用到本地数据库名称为:CrashCourse,查询的表名称为products,下面的编程实例中,演示了查询products表中价钱大于30的所有项目。products表格完整内容如下:

C++怎么连接mysql数据库并读取数据

#include <stdio.h>
#include <mysql/mysql.h>
#include <iostream>
using namespace std;
 
MYSQL mysql;  //mysql连接
MYSQL_RES* res; //结果集结构体   
MYSQL_ROW row; //char** 二维数组,存放记录  
 
int main()
{	
	// 步骤1: 初始化并连接数据库,获得操作数据库的句柄
	mysql_init(&mysql);    //初始化
	if (!(mysql_real_connect(&mysql, "localhost", "root", "root", "CrashCourse", 0, NULL, 0))) {
		cout << "Couldn't connect to Database!\n : " << mysql_error(&mysql);
		exit(1);
	}
	else {
		printf("Database connection succeeded. Connected...\n\n");
	}
	// 步骤2: 执行查询语句,查询需要的数据(设置编码格式也相当于执行特殊的查询语句)
	mysql_query(&mysql, "set names gbk"); // 设置编码格式
	mysql_query(&mysql, "SELECT * from products where prod_price > 30");
 
	// 步骤3:获取结果集
	res = mysql_store_result(&mysql);
	// 步骤4:显示结果集中每行数据
    int cols = mysql_num_fields(res); // 计算结果集中,列的个数
	while (row = mysql_fetch_row(res)) {
    
    	for (int i = 0; i < cols; ++i) {
      		cout << row[i] << "\t";
    	}
    	cout << endl;
	}
 	// 步骤5:释放结果集合mysql句柄
	mysql_free_result(res);
	mysql_close(&mysql);
 return 0;
 
}

查询结果如下:

C++怎么连接mysql数据库并读取数据

读到这里,这篇“C++怎么连接mysql数据库并读取数据”文章已经介绍完毕,想要掌握这篇文章的知识点还需要大家自己动手实践使用过才能领会,如果想了解更多相关内容的文章,欢迎关注亿速云行业资讯频道。

推荐阅读:
  1. window如何实现sublime的C++代码跳转
  2. notepad如何编译运行c++

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

c++ mysql

上一篇:怎么修改docker容器中MySQL的用户密码

下一篇:怎么用Ant Design编写登录和注册页面

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》