目录
1、需要包含mysql API的头文件
2、连接mysql具体步骤
2.1 mysql_real_connect
2.2 mysql_query 或 mysql_real_query
2.3 获取结果集mysql_store_result
2.4 显示结果集中每行数据
3、一个编程示例
首页 数据库 mysql教程 C 怎么连接mysql数据库并读取数据

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

Jun 03, 2023 am 09:05 AM
mysql c++

    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
    						)
    登录后复制

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

    • mysql:是已有MYSQL结构的地址。调用mysql_real_connect()之前,必须调用mysql_init()来初始化MYSQL结构。

    • host:是主机名或IP地址。如果“host”是NULL或字符串"localhost",连接将被视为与本地主机的连接。

    • user:用户的MySQL登录ID。如果“user”是NULL或空字符串"",用户将被视为当前用户。

    • passwd:用户的密码。如果“passwd”是NULL,仅会对该用户的(拥有1个空密码字段的)用户表中的条目进行匹配检查。

    • db:是数据库名称。如果db为NULL,连接会将默认的数据库设为该值。

    • port:如果“port”不是0,其值将用作TCP/IP连接的端口号。注意,“host”参数决定了连接的类型。

    • unix_socket:如果unix_socket不是NULL,该字符串描述了应使用的套接字或命名管道。注意,“host”参数决定了连接的类型。

    • client_flag:值通常为0

    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)
    登录后复制
    • mysql:为通过获取到的mysql操作句柄。

    • stmt_str:表示需要执行的查询语句。

    • length:为查询语句的长度。

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

    • mysql_query() 不能用于执行带二进制的语句,也就是参数stmt_str中不能有二进制数据,会被解析成字符。

    • mysql_query查速度稍慢一些,因为需要计算查询语句的长度

    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 
    #include <mysql/mysql.h>
    #include 
    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数据库并读取数据的详细内容。更多信息请关注PHP中文网其他相关文章!

    本站声明
    本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

    热AI工具

    Undresser.AI Undress

    Undresser.AI Undress

    人工智能驱动的应用程序,用于创建逼真的裸体照片

    AI Clothes Remover

    AI Clothes Remover

    用于从照片中去除衣服的在线人工智能工具。

    Undress AI Tool

    Undress AI Tool

    免费脱衣服图片

    Clothoff.io

    Clothoff.io

    AI脱衣机

    Video Face Swap

    Video Face Swap

    使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

    热工具

    记事本++7.3.1

    记事本++7.3.1

    好用且免费的代码编辑器

    SublimeText3汉化版

    SublimeText3汉化版

    中文版,非常好用

    禅工作室 13.0.1

    禅工作室 13.0.1

    功能强大的PHP集成开发环境

    Dreamweaver CS6

    Dreamweaver CS6

    视觉化网页开发工具

    SublimeText3 Mac版

    SublimeText3 Mac版

    神级代码编辑软件(SublimeText3)

    MySQL的角色:Web应用程序中的数据库 MySQL的角色:Web应用程序中的数据库 Apr 17, 2025 am 12:23 AM

    MySQL在Web应用中的主要作用是存储和管理数据。1.MySQL高效处理用户信息、产品目录和交易记录等数据。2.通过SQL查询,开发者能从数据库提取信息生成动态内容。3.MySQL基于客户端-服务器模型工作,确保查询速度可接受。

    laravel入门实例 laravel入门实例 Apr 18, 2025 pm 12:45 PM

    Laravel 是一款 PHP 框架,用于轻松构建 Web 应用程序。它提供一系列强大的功能,包括:安装: 使用 Composer 全局安装 Laravel CLI,并在项目目录中创建应用程序。路由: 在 routes/web.php 中定义 URL 和处理函数之间的关系。视图: 在 resources/views 中创建视图以呈现应用程序的界面。数据库集成: 提供与 MySQL 等数据库的开箱即用集成,并使用迁移来创建和修改表。模型和控制器: 模型表示数据库实体,控制器处理 HTTP 请求。

    C#与C:历史,进化和未来前景 C#与C:历史,进化和未来前景 Apr 19, 2025 am 12:07 AM

    C#和C 的历史与演变各有特色,未来前景也不同。1.C 由BjarneStroustrup在1983年发明,旨在将面向对象编程引入C语言,其演变历程包括多次标准化,如C 11引入auto关键字和lambda表达式,C 20引入概念和协程,未来将专注于性能和系统级编程。2.C#由微软在2000年发布,结合C 和Java的优点,其演变注重简洁性和生产力,如C#2.0引入泛型,C#5.0引入异步编程,未来将专注于开发者的生产力和云计算。

    表演竞赛:Golang vs.C 表演竞赛:Golang vs.C Apr 16, 2025 am 12:07 AM

    Golang和C 在性能竞赛中的表现各有优势:1)Golang适合高并发和快速开发,2)C 提供更高性能和细粒度控制。选择应基于项目需求和团队技术栈。

    解决数据库连接问题:使用minii/db库的实际案例 解决数据库连接问题:使用minii/db库的实际案例 Apr 18, 2025 am 07:09 AM

    在开发一个小型应用时,我遇到了一个棘手的问题:需要快速集成一个轻量级的数据库操作库。尝试了多个库后,我发现它们要么功能过多,要么兼容性不佳。最终,我找到了minii/db,这是一个基于Yii2的简化版本,完美地解决了我的问题。

    在 visual studio code 中使用 c 吗 在 visual studio code 中使用 c 吗 Apr 15, 2025 pm 08:03 PM

    在 VS Code 中编写 C 语言不仅可行,而且高效优雅。关键在于安装优秀的 C/C 扩展,它提供代码补全、语法高亮和调试等功能。VS Code 的调试功能可帮助你快速定位 bug,而 printf 输出是老式但有效的调试方法。此外,动态内存分配时应检查返回值并释放内存以防止内存泄漏,调试这些问题在 VS Code 中很方便。虽然 VS Code 无法直接帮助进行性能优化,但它提供了一个良好的开发环境,便于分析代码性能。良好的编程习惯、可读性和可维护性也至关重要。总之,VS Code 是一

    VSCode怎么用 VSCode怎么用 Apr 15, 2025 pm 11:21 PM

    Visual Studio Code (VSCode) 是一款跨平台、开源且免费的代码编辑器,由微软开发。它以轻量、可扩展性和对众多编程语言的支持而著称。要安装 VSCode,请访问官方网站下载并运行安装程序。使用 VSCode 时,可以创建新项目、编辑代码、调试代码、导航项目、扩展 VSCode 和管理设置。VSCode 适用于 Windows、macOS 和 Linux,支持多种编程语言,并通过 Marketplace 提供各种扩展。它的优势包括轻量、可扩展性、广泛的语言支持、丰富的功能和版

    Golang和C:性能的权衡 Golang和C:性能的权衡 Apr 17, 2025 am 12:18 AM

    Golang和C 在性能上的差异主要体现在内存管理、编译优化和运行时效率等方面。1)Golang的垃圾回收机制方便但可能影响性能,2)C 的手动内存管理和编译器优化在递归计算中表现更为高效。

    See all articles