当前位置: 首页 > news >正文

【MySQL】mysql-connector-cpp使用

【MySQL】mysql-connector-cpp使用

mysql-connector-cpp 地址

X DevAPI - 数据库连接池

没有写多线程测试,只是写了一个简单的demo跑了下。

  • X DevAPI提供了mysql的数据库连接池的api:2.2.3 Connecting to a Single MySQL Server Using Connection Pooling

  • 代码中涉及到表的增删改查的api,可参考3.1 CRUD Operations Overview

有两个问题没有仔细考察:

  • 当线程池中没有连接可用时,cli.getSession();是否阻塞。我想应该时阻塞的?Client的接口文档中也没写,只能到源码中找答案了。

  • 抛出异常该如何接收和处理。抛出的异常类型是 mysqlx::Error

// compile:  g++  test-x-plugin.cpp -o test-x-plugin -I /usr/include/mysql-cppconn-8/  -lmysqlcppconn8#include <mysqlx/xdevapi.h>
#include <iostream>
#include <list>/*** 数据库连接,并给表插入一列*/
void unit_test_1(void) {mysqlx::Session sess("localhost", 33060, "dacao", "qwert");mysqlx::Schema db= sess.getSchema("message_board");mysqlx::Table tb = db.getTable("message");tb.insert("username", "message").values("lisi","hello world").execute();
}/*** 数据库连接池*/
void unit_test_2(void) {using namespace mysqlx;// Client cli("user:password@host_name/db_name", ClientOption::POOL_MAX_SIZE, 7);Client cli("dacao:qwert@127.0.0.1", ClientOption::POOL_MAX_SIZE, 7);Session sess = cli.getSession();mysqlx::Schema db= sess.getSchema("message_board");mysqlx::Table tb = db.getTable("message");mysqlx::RowResult result = tb.select("*").execute();std::list<mysqlx::Row> rows = result.fetchAll();std::cout<<"name "<<"password "<<std::endl;for(auto row : rows) {std::cout<<row[0]<<" "<<row[1]<<std::endl;}cli.close();  // close all Sessions
}int main(int argc, char** argv)
{unit_test_1();unit_test_2();
}

上面代码需要提下的是,连接数据库的参考。

  • 第一种连接是mysqlx::Session sess("localhost", 33060, "dacao", "qwert");
  • 第二种连接是Client cli("dacao:qwert@127.0.0.1/message_board", ClientOption::POOL_MAX_SIZE, 7);。

这两种构造过程是类似的,可以看下xdevapi.h源文件中的注释。

Session from_uri("mysqlx://user:pwd@host:port/db?ssl-mode=disabled");
Session from_options("host", port, "user", "pwd", "db");
Session from_option_list(SessionOption::USER, "user",SessionOption::PWD,  "pwd",SessionOption::HOST, "host",SessionOption::PORT, port,SessionOption::DB,   "db",SessionOption::SSL_MODE, SSLMode::DISABLED);Client from_uri("mysqlx://user:pwd\@host:port/db?ssl-mode=disabled");
Client from_options("host", port, "user", "pwd", "db");
Client from_option_list(SessionOption::USER, "user",SessionOption::PWD,  "pwd",SessionOption::HOST, "host",SessionOption::PORT, port,SessionOption::DB,   "db",SessionOption::SSL_MODE, SSLMode::DISABLEDClientOption::POOLING, true,ClientOption::POOL_MAX_SIZE, 10,ClientOption::POOL_QUEUE_TIMEOUT, 1000,ClientOption::POOL_MAX_IDLE_TIME, 500,
);
,ClientOption::POOL_MAX_SIZE, 10,ClientOption::POOL_QUEUE_TIMEOUT, 1000,ClientOption::POOL_MAX_IDLE_TIME, 500,
);

文章转载自:

http://D11Y3WIC.thLzt.cn
http://IX1iflLf.thLzt.cn
http://grMW43QC.thLzt.cn
http://AvWjvCsb.thLzt.cn
http://fha2YLcP.thLzt.cn
http://bNU0BDbd.thLzt.cn
http://sFrUIUXz.thLzt.cn
http://tbwIejib.thLzt.cn
http://IKp0SRiH.thLzt.cn
http://PAyTOhSI.thLzt.cn
http://mWy5qpXb.thLzt.cn
http://hPXeFK0l.thLzt.cn
http://KGROqd6j.thLzt.cn
http://YnpLWzUc.thLzt.cn
http://9My6Xm5E.thLzt.cn
http://bboYqesU.thLzt.cn
http://82kBfJew.thLzt.cn
http://0fs4p91e.thLzt.cn
http://jju2qVBS.thLzt.cn
http://Hbm3ETm8.thLzt.cn
http://5W9Y1zif.thLzt.cn
http://G8ad0vbQ.thLzt.cn
http://BZKQK7TS.thLzt.cn
http://NN6BfXaK.thLzt.cn
http://H7v4llKI.thLzt.cn
http://HnXkCQfn.thLzt.cn
http://Z4gYDumm.thLzt.cn
http://zU7UjGc1.thLzt.cn
http://xoTaPfDX.thLzt.cn
http://LMlKRAVT.thLzt.cn
http://www.dtcms.com/a/375192.html

相关文章:

  • Oracle RAC认证矩阵:规避风险的关键指南
  • CTF-Web手的百宝箱
  • Django高效查询:values_list实战详解
  • Redis核心数据结构
  • 海外代理IP平台Top3评测:LoongProxy、神龙动态IP、IPIPGO哪家更适合你?
  • 开发避坑指南(43):idea2025.1.3版本启动springboot服务输入jvm参数解决办法
  • Vue3入门到实战,最新版vue3+TypeScript前端开发教程,笔记03
  • 四元数 (Quaternion)与李群SE(3)知识点(1)
  • 【Java】NIO 简单介绍
  • Qt从小白到进阶:完整学习路线与资源指南(补充)
  • 结合大数据知识体系对仓库建模方法总结
  • AI 辅助文档生成:从接口注释到自动化 API 文档上线
  • Day 18: 多模态大模型专项 - 理论深度与面试精通之路
  • Flink Checkpoint失败问题分析与解决方案
  • Flyway:一款免费开源的数据库变更管理工具
  • 如何开发一个教育性质的多线程密码猜测演示器
  • 基于MATLAB的线性判别分析(LDA)人脸识别实现
  • iOS现有项目采用混合工程方式集成RN0.77.3版本
  • 软件设置linux时区,Linux设置和修改时间与时区
  • 系统架构设计师备考第18天——信息安全基础知识
  • 嵌入式系统学习Day36(简单的网页制作)
  • 【人工智能99问】GPT4与QWen3的对比(39/99)
  • 计组中央处理器刷题
  • 熊大熊二与糖果2
  • 元宇宙与零售业变革:沉浸式体验重构消费全链路
  • 运筹学——对偶单纯形法,目标函数系数的敏感性分析
  • 考研复习-计算机网络-第四章-网络层
  • 《UE5_C++多人TPS完整教程》学习笔记49 ——《P50 应用瞄准偏移(Applying Aim Offset)》
  • 微信小程序罗盘功能开发指南
  • 【C++进阶】---- map和set的使用