C++:连接MySQL数据库(一)

1、MySQL提供的连接相关API
  • C和C++都提供了访问MySQL的API接口,连接过程也较为简单
  • 主要是下面两个函数
    • mysql_init:初始化创建的MySQL结构体,如果传入空则自动分配一个。失败返回NULL,成功返回一个指针,它是线程不安全的,其内部也会自动调用mysql_library_init函数
    • mysql_library_init函数:主要在多线程情况下使用,用于初始化服务连接,它实际上是一个宏函数(mysql_server_init)
    • mysql_library_end函数:主要在多线程情况下使用,用于关闭服务连接,实际上是一个宏函数(mysql_server_end)
    • mysql_close函数:用于释放MySQL结构体对象
MYSQL* mysql_init(MYSQL *mysql);mysql_library_init(int argc, char **argv, char **groups);mysql_library_end();void  mysql_close(MYSQL *sock);
  • mysql_real_connect函数:用于与MySQL数据库建立连接

    • mysql:初始化的结构体对象
    • host、user、passwd、db、port:分别对应MySQL服务器地址、用户名、密码、库名、端口
    • unix_socket:这个是Linux网络编程里面的知识表示,Socket套接字,可以传入0让连接函数自己创建
    • clientflag:连接可以做一些设置,是否希望此次建立的连接是否需要同一些其他特性需求,例如:允许多查询、返回表信息等等,默认传0
    • 返回值:成功返回MySQL结构体指针,失败返回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 clientflag);
    
  • mysql_options函数:用于设置一些连接超时、断开重连等

    • MYSQL_OPT_CONNECT_TIMEOUT:连接超时设置,可以设置连接多久连不上就超时,减少阻塞事件
    • MYSQL_OPT_READ_TIMEOUT:设置读(查询)超时
    • MYSQL_OPT_RECONNECT:断开重连
      • 成功返回0,失败返回非0
    int mysql_options(MYSQL *mysql,enum mysql_option option, const void *arg);
    
2、C++连接MySQL
  • 在使用Linux环境下如果是用Makefile编译需要加入一些编译参数-lmysqlclient -I/usr/local/mysql
#include <iostream>
#include <mysql/mysql.h>
using namespace std;int main(int argc, char *argv[])
{MYSQL mysql;// 1. 初始化mysql结构体并且初始化服务连接环境mysql_init(&mysql);const char *host = "127.0.0.1";const char *user = "root";const char *password = "123456";const char *db = "mysql";int timeout = 3;// 2. 连接超时时长设置mysql_options(&mysql, MYSQL_OPT_CONNECT_TIMEOUT, &timeout);// 3. 断开重连设置int reconnect = 1;mysql_options(&mysql, MYSQL_OPT_RECONNECT, &reconnect);// 4. MySQL连接建立if(!mysql_real_connect(&mysql, host, user, password, db, 3306, 0, 0)){std::cout << "mysql connect failed!" << mysql_error(&mysql) << std::endl;}else{std::cout << "mysql connect " << host << " success!" << std::endl;}cout << "Hello World!\n" << endl;// 5. 释放mysql结构体mysql_close(&mysql);return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/795759.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【C++航海王:追寻罗杰的编程之路】C++的类型转换

目录 1 -> C语言中的类型转换 2 -> 为什么C需要四种类型转换 3 -> C强制类型转换 3.1 -> static_cast 3.2 -> reinterpret_cast 3.3 -> const_cast 3.4 -> dynamic_cast 4 -> RTTI 1 -> C语言中的类型转换 在C语言中&#xff0c;如果赋值运…

计算机中数的表示

0. 简介 介绍计算机中数的表示方法&#xff0c;主要内容来自 c s a p p csapp csapp。 1. 整数的表示 包括有符号整数与无符号整数的表示。 假设 w → [ w n − 1 w n − 2 . . . w 0 ] \overrightarrow w[w_{n-1}w_{n-2}...w_0] w [wn−1​wn−2​...w0​] 为一种整数。…

【Frida】【Android】09_爬虫之Socket

&#x1f6eb; 系列文章导航 【Frida】【Android】01_手把手教你环境搭建 https://blog.csdn.net/kinghzking/article/details/136986950【Frida】【Android】02_JAVA层HOOK https://blog.csdn.net/kinghzking/article/details/137008446【Frida】【Android】03_RPC https://bl…

2024 年广东省职业院校技能大赛(高职组)“云计算应用”赛项样题 3

#需要资源&#xff08;软件包及镜像&#xff09;或有问题的&#xff0c;可私聊博主&#xff01;&#xff01;&#xff01; #需要资源&#xff08;软件包及镜像&#xff09;或有问题的&#xff0c;可私聊博主&#xff01;&#xff01;&#xff01; #需要资源&#xff08;软件…

江协科技STM32:TIM输出比较

输出比较模块的主要功能&#xff1a;输出一定频率和占空比的PWM波形 CC是捕获比较的意思,R是Register&#xff0c;寄存器的意思&#xff0c;CCR捕获比较寄存器它是输入捕获和输出比较共用的 当使用输入捕获&#xff0c;它就是捕获寄存器 当使用输出比较&#xff0c;它就是比…

蓝桥杯每日一题:斐波那契(矩阵乘法)

在斐波那契数列中&#xff0c;Fib00,Fib11,FibnFibn−1Fibn−2(n>1) 给定整数 n&#xff0c;求 Fibnmod10000。 输入格式 输入包含不超过 100100 组测试用例。 每个测试用例占一行&#xff0c;包含一个整数 当输入用例 n−1时&#xff0c;表示输入终止&#xff0c;且该…

自由定义表单table组件(antdesign版)

对表单自由排序&#xff0c;决定哪些列显示隐藏&#xff0c;能保存设置过的操作 效果图 使用页&#xff0c;操作列dataIndex要设置为action&#xff0c;forKey必需是唯一的 用的vue2版的antdesign vue写的样式&#xff0c;想用其它的ui框架可以自行修改样式 <customTable …

Brain.js 的力量:构建多样化的人工智能应用程序

机器学习&#xff08;ML&#xff09;是人工智能 (AI) 的一种形式&#xff0c;旨在构建可以从处理的数据中学习或使用数据更好地执行的系统。人工智能是模仿人类智能的系统或机器的总称。 机器学习&#xff08;ML&#xff09;与复杂的数学纠缠在一起&#xff0c;让大多数初学者…

解决nginx代理后,前端拿不到后端自定义的header

先说结论&#xff0c;因为前端和nginx对接&#xff0c;所以需要在nginx添加如下配置向前端暴露header add_header Access-Control-Expose-Headers Authorization 排查过程 1.后端设置了Authorization 的响应头作为token的返回&#xff0c;前后端本地联调没有问题 response.s…

嵌入式驱动学习第六周——内核函数调用(堆栈打印)

前言 在内核中&#xff0c;函数调用堆栈非常重要&#xff0c;因为它可以帮助开发人员理解代码是如何执行的&#xff0c;从而进行调试、性能优化或问题排查。堆栈可以显示当前执行的函数以及导致该函数调用的先前函数&#xff0c;从而形成一个函数调用链。本篇博客就介绍堆栈打印…

软件无线电原理

常规软件无线电接收器&#xff1a; 首先&#xff0c;来自天线的射频信号被放大&#xff0c;通常射频部分利用一个调谐器将感兴趣的频段区域的信号进行放大。这个放大的射频信号被送入一个混频器。来自本振的信号也被送入混频器&#xff0c;其频率由无线电的调谐控制决定。混频器…

【LeetCode】--- 动态规划 集训(二)

目录 一、63. 不同路径 II1.1 题目解析1.2 状态转移方程1.3 解题代码 二、931. 下降路径最小和2.1 题目解析2.2 状态转移方程2.3 解题代码三、174. 地下城游戏3.1 题目解析3.2 状态转移方程3.3 解题代码 一、63. 不同路径 II 题目地址&#xff1a; 不同路径 II 一个机器人位于…

传输层 --- TCP (下篇)

目录 1. 超时重传 1.1. 数据段丢包 1.2. 接收方发送的ACK丢包 1.3. 超时重传的超时时间如何设置 2. 流量控制 3. 滑动窗口 3.1. 初步理解滑动窗口 3.2. 滑动窗口的完善理解 3.3. 关于快重传的补充 3.4. 快重传和超时重传的区别 4. 拥塞控制 4.1. 拥塞控制的宏观认识…

Java主流框架的历史演进与现代应用

Java作为一门广泛应用的编程语言&#xff0c;拥有丰富的框架生态系统&#xff0c;这些框架在Java应用程序的开发中发挥着重要作用。让我们深入探讨Java主流框架的历史演进&#xff0c;并对现代常用框架进行详细描述&#xff0c;包括Spring、Hibernate、Struts、Maven、MyBatis、…

「 典型安全漏洞系列 」11.身份验证漏洞详解

身份验证是验证用户或客户端身份的过程。网站可能会暴露给任何连接到互联网的人。这使得健壮的身份验证机制成为有效的网络安全不可或缺的一部分。 1. 什么是身份验证 身份验证即认证&#xff0c;是验证给定用户或客户端身份的过程。身份验证漏洞使攻击者能够访问敏感数据和功…

3.手写JavaScript前序中序后序递归遍历二叉树

一、核心思想 1.前序 本质是中左右&#xff0c;对每个结点执行中左右的操作&#xff0c;全部结点执行完毕后&#xff0c;返回结果 2.中序 本质是左中右&#xff0c;对每个结点执行左中右的操作&#xff0c;全部结点执行完毕后&#xff0c;返回结果 3.后序 本质是左右中&a…

Linux网络基础 (三) —— Socket

文章目录 Socket 编程基本概念Socket背景Socket 为了解决什么问题 socketsockaddr结构sockaddrsockaddr_insockaddr 和 sockaddr_in 的关系sockaddr_un 示例代码 &#x1f396; 博主的CSDN主页&#xff1a;Ryan.Alaskan Malamute &#x1f4dc; 博主的代码仓库主页 [ Gitee ]&…

【MySQL】数据操作语句(DML)

&#x1f466;个人主页&#xff1a;Weraphael ✍&#x1f3fb;作者简介&#xff1a;目前学习计网、mysql和算法 ✈️专栏&#xff1a;MySQL学习 &#x1f40b; 希望大家多多支持&#xff0c;咱一起进步&#xff01;&#x1f601; 如果文章对你有帮助的话 欢迎 评论&#x1f4ac…

【论文通读】AgentStudio: A Toolkit for Building General Virtual Agents

AgentStudio: A Toolkit for Building General Virtual Agents 前言AbstractMotivationFramework评估GUI GroudingReal-World Cross-Application Benchmark Suite Conclusion 前言 来自昆仑万象的一篇智能体环境数据大一统框架工作&#xff0c;对未来计算机智能体的发展具有指…

FPGA常用IP核之FIFO学习

IP核是FPGA芯片公司提供的逻辑功能块&#xff0c;在FPGA芯片中可以进行优化和预先配置&#xff0c;可以直接在用户设计的程序中使用&#xff0c;应用范围很广。在FPGA设计开发过程中使用IP核&#xff0c;可以大大的缩短开发周期&#xff0c;高度优化的IP核可以使FPG开发工程师专…