C++动态链接MySQL库
C++链接MySQL库
库安装目录


CMakeList
cmake_minimum_required(VERSION 3.22)
project(MySQLConnectionPool)
include_directories(/usr/include/mysql) #安装库路径
set(CMAKE_CXX_STANDARD 17)
add_executable(MySQLConnectionPool main.cpp)
target_link_libraries(MySQLConnectionPool mysqlclient)
测试代码
//1.test.c
#include<cstdio>
#include "mysql/mysql.h"
int main() {
MYSQL * mysql = NULL;
if ((mysql = mysql_init(NULL)) == NULL) {
fprintf(stderr, "error in mysql_init\n");
exit(1);
}
mysql = mysql_real_connect(mysql, "localhost", "root", "lhh123456", "Test", 3306, 0, 0);
if (!mysql) {
fprintf(stderr, "connection failed!\n");
exit(1);
}
printf("Success!\n");
return 0;
}

不使用连接池

使用连接池

一定注意使用show variables like "max_connections";查看MySQL最大连接数,连接池最大连接不能超过这个数,使用set GLOBAL max_connections=1000;可以修改最大连接数
void test(int i) {
char sql[512]{0};
Connection conn;
std::this_thread::sleep_for(std::chrono::milliseconds(2));
sprintf(sql, "insert into Info(ID,UserName,IDCard,Passwd)values(%d,'%s','%s','%s');",
i, "zhangsan", std::to_string(i).c_str(), "123456");
conn.connect("127.0.0.1", 3306, "root", "lhh123456", "Test");
conn.update(sql);
}
void test1(int i) {
char sql[512]{0};
ConnectionPool *pool = ConnectionPool::getConnectionPool();
std::shared_ptr<Connection> sp = pool->getConnection();
sprintf(sql, "insert into Info(ID,UserName,IDCard,Passwd)values(%d,'%s','%s','%s');",
i, "zhangsan", std::to_string(i).c_str(), "123456");
sp->update(sql);
}
C++动态链接MySQL库的更多相关文章
- oracle 配置DBlink 链接mysql库
一,环境配置与准备.简介 \ oracle mysql 主机名 oracle01 mysqlre1 IP 192.168.0.10 192.168.0.187 本文章是oracle通过dblink连接 ...
- linux下C++动态链接C++库示例详解
注意其中使用函数返回基类指针的用法,因为Linux的动态链接库不能像MFC中那样直接导出类 一.介绍 如何使用dlopen API动态地加载C++函数和类,是Unix C++程序员经常碰到的问题. 事 ...
- 【Linux】动态链接函数库
动静区别 1. gcc –c mylib.c –o mylib.o 2. gcc -shared -fPIC mylib.o -o libmylib.so 3. 将制作好的libmylib.so 复制 ...
- php动态链接扩展库
文章来源:http://keping.me/php-call-so/ PHP调用C/C++动态链接库 David June 19, 2013 C++, Linux, Study 摘要 有时候,单纯依靠 ...
- 动态链接 - dll和so文件区别与构成
动态链接,在可执行文件装载时或运行时,由操作系统的装载程序加载库.大多数操作系统将解析外部引用(比如库)作为加载过程的一部分.在这些系统上,可执行文件包含一个叫做import directory的 ...
- 再探Linux动态链接 -- 关于动态库的基础知识
在近一段时间里,由于多次参与相关专业软件Linux运行环境建设,深感有必要将这些知识理一理,供往后参考. 编译时和运行时 纵观程序编译整个过程,细分可分为编译(Compiling,指的是语言到平台 ...
- (原)vs2013静态及动态链接opencv3.0的库
转载请注明出处: http://www.cnblogs.com/darkknightzh/p/5477551.html 静态链接步骤如下: 1. 在“通用配置”-“VC++目录”-“包含目录”中添加: ...
- cmake 添加头文件目录,链接动态、静态库(转载)
来源网址:http://www.cnblogs.com/binbinjx/p/5626916.html 罗列一下cmake常用的命令. CMake支持大写.小写.混合大小写的命令. 1. 添加头文件目 ...
- linux下 GCC编译链接静态库&动态库
静态库 有时候需要把一组代码编译成一个库,这个库在很多项目中都要用到,例如libc就是这样一个库, 我们在不同的程序中都会用到libc中的库函数(例如printf),也会用到libc中的变量(例如以后 ...
- cmake 添加头文件目录,链接动态、静态库
罗列一下cmake常用的命令. CMake支持大写.小写.混合大小写的命令. 1. 添加头文件目录INCLUDE_DIRECTORIES 语法: include_directories([AFTER| ...
随机推荐
- Django 连接数据库 MySQL
一.Django 连接 MySQL 修改 settings.py 文件 # 默认用的是sqlite3 # Database # https://docs.djangoproject.com/en/4. ...
- 萌新码农的第一篇:MarkDown的使用方法
MarkDown的使用方法 使用的编辑软件Typora 1.标题的使用方法 输入''#''然后空格,输入标题名字即可生成标题. 随着''#''的增多,标题的大小会依次减小,最多到六级标题 2.排字 字 ...
- Nginx+lua+openresty精简系列
1. CentOS系统安装openresty 你可以在你的 CentOS 系统中添加 openresty 仓库,这样就可以便于未来安装或更新我们的软件包(通过 yum update 命令).运行下面的 ...
- tcp_tw_recycle参数引发的系统问题
文章转载自: https://blog.csdn.net/zhuyiquan/article/details/68925707
- MySQL数据库安装保姆教程及问题解决
使用Mysql的zip压缩包解压版,下载之后需进行一定的配置,才能使用它. 下面对Mysql压缩包版的安装方法进行详细的描述,如有疑问或错误,望及时反馈. 首先,mysql的官方下载地址点我进行下载 ...
- 记Windows的一个存在了十多年的bug
bug Windows有一个bug,持续了十多年,从Windows Visita开始(2007年),一直存在,直到Windows11(2021年)才修复(其实也不叫修复,后面我再具体说),而Windo ...
- .NET下数据库的负载均衡(有趣实验)(续)
.NET下数据库的负载均衡(有趣实验)这篇文章发表后,受到了众多读者的关注与好评,其中不乏元老级程序员. 读者来信中询问最多的一个问题是:它是否能支持"异种数据库"的负载均衡?? ...
- 洛谷P1115 最大子段和 (线性DP)
经典的线性DP例题,用f[i]表示以第i个位置结尾的最大连续子段和. 状态转移方程:f[i]=max(f[i],f[i-1]+a[i]); 这里省去了a数组,直接用f数组读数据,如果f[i-1]< ...
- 20220728 - DP训练 #1
20220728 - DP训练 #1 时间记录 \(8:00-9:00\) T1 尝试做 \(T1\),可惜并未做出,没有想到是资源分配 设置三维状态,初值一直不知道怎么设置 并且对于距离有一部分不会 ...
- 一天十道Java面试题----第四天(线程池复用的原理------>spring事务的实现方式原理以及隔离级别)
这里是参考B站上的大佬做的面试题笔记.大家也可以去看视频讲解!!! 文章目录 31.线程池复用的原理 32.spring是什么? 33.对Aop的理解 34.对IOC的理解 35.BeanFactor ...