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);
}
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 在鹅厂做java开发是什么体验
· 百万级群聊的设计实践
· WPF到Web的无缝过渡:英雄联盟客户端的OpenSilver迁移实战
· 永远不要相信用户的输入:从 SQL 注入攻防看输入验证的重要性
· 全网最简单!3分钟用满血DeepSeek R1开发一款AI智能客服,零代码轻松接入微信、公众号、小程