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

C++连接使用 MySQL Connector/C++ 库报错bad allocation

第一、在C++项目添加头部路径–属性—添加mysql-connector-c+±9.1.0-winx64.zip解压之后的路径
mysql-connector-c+±9.1.0-winx64.zip下载官网:https://dev.mysql.com/downloads/connector/cpp/

解压之后获取路径D:\2025\mysql-connector-c+±9.0.0-winx64
在这里插入图片描述
在这里插入图片描述
添加D:\2025\mysql-connector-c+±9.0.0-winx64\include

添加依赖库在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

最后把dll拷贝到项目的x64\Release文件夹下include和plugin
在这里插入图片描述
代码:

// ProjectMysql.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。
//

#include <iostream>
#include <mysql_driver.h>
#include <mysql_connection.h>
#include <cppconn/statement.h>
#include <cppconn/statement.h>
#include <cppconn/resultset.h>
#include <cppconn/exception.h>
int main()
{
    std::cout << "Hello World!\n";
    try {

      

        sql::mysql::MySQL_Driver* driver = sql::mysql::get_mysql_driver_instance();

        //创建连接,修正了IP地址
        std::unique_ptr<sql::Connection> con(driver->connect("tcp://127.0.0.1:3306", "root", "123456"));
        
         // 连接到数据库
        con->setSchema("meetings");
        // 设置客户端字符集为 UTF-8
        con->setClientOption("characterSetResults", "utf8");
        con->setClientOption("characterSetConnection", "utf8");
        // 创建语句对象
        std::unique_ptr<sql::Statement> stmt(con->createStatement());

        // 执行查询
        std::unique_ptr<sql::ResultSet> res(stmt->executeQuery("SELECT * FROM users"));

        // 处理结果集(这里省略)
        if (res->next()) {
            // 获取第一列的值
            std::cout << "1连接数据库成功";
           
           std::cout << "ID: " << res->getInt("users_id") << ", Name: " << res->getString("users_name") << std::endl;
            std::string value = res->getString(1);
            std::string value2 = res->getString(2);
            std::cout << "1连接数据库成功"+ value2;
            // 显示消息框
           // std::cout << std::wstring(value.begin(), value.end()).c_str();
        }
    }
    catch (sql::SQLException& e) {
         std::cerr << "# ERR: SQLException in " << __FILE__;
         std::cerr << "(" << __FUNCTION__ << ") on line " << __LINE__ << std::endl;
         std::cerr << "# ERR: " << e.what();
         std::cerr << " (MySQL error code: " << e.getErrorCode();
         std::cerr << ", SQLState: " << e.getSQLState() << " )" << std::endl;
        std::string value = e.what() + e.getErrorCode();
        std::cout << std::wstring(value.begin(), value.end()).c_str();

        std::cout << "1连接数据库有误";
    }
    catch (std::bad_alloc& e) {
        // std::cerr << "Memory allocation failed: " << e.what() << std::endl;
        std::string value = e.what();
        std::cout << std::wstring(value.begin(), value.end()).c_str();
        std::cout << "2连接数据库有误";
    }
    catch (std::exception& e) {
        // std::cerr << "General exception: " << e.what() << std::endl;
        std::cout << "3连接数据库有误";
    }
}

// 运行程序: Ctrl + F5 或调试 >“开始执行(不调试)”菜单
// 调试程序: F5 或调试 >“开始调试”菜单

// 入门使用技巧: 
//   1. 使用解决方案资源管理器窗口添加/管理文件
//   2. 使用团队资源管理器窗口连接到源代码管理
//   3. 使用输出窗口查看生成输出和其他消息
//   4. 使用错误列表窗口查看错误
//   5. 转到“项目”>“添加新项”以创建新的代码文件,或转到“项目”>“添加现有项”以将现有代码文件添加到项目
//   6. 将来,若要再次打开此项目,请转到“文件”>“打开”>“项目”并选择 .sln 文件


http://www.kler.cn/a/510826.html

相关文章:

  • 实践深度学习:构建一个简单的图像分类器
  • Apache Hive--排序函数解析
  • (十五)WebGL中gl.texImage2D函数使用详解
  • 【记录52】el-table-column 添加fixed属性 滚动条无法滑动
  • 【视觉惯性SLAM:十七、ORB-SLAM3 中的跟踪流程】
  • Qt之文件系统操作和读写
  • 怎么查看 centos5 是否安装 mysql
  • HTML应用指南:利用GET请求获取微博用户特定标签的文章内容
  • 2025最新版PyCharm安装使用指南
  • 解锁新技能:Windows Forms与ASP.NET API的梦幻联动
  • 电商项目高级篇08-springCache
  • Jenkins-pipeline语法说明
  • leetcode——最长连续序列(java)
  • 基于SSM的自助购药小程序设计与实现(LW+源码+讲解)
  • WPF 复杂页面布局及漂亮 UI 界面设计全解析
  • 二十三种设计模式-装饰器模式
  • 创建 pdf 合同模板
  • MYSQL的结构体的具体情况
  • python自动化测试断言详细实战代码
  • 【电视盒子】HI3798MV300刷机教程笔记/备份遥控码修复遥控器/ADB/线刷卡刷/电视盒子安装第三方应用软件
  • 内联变量(inline variables):在多个文件中共享全局常量
  • 力扣动态规划-4【算法学习day.98】
  • LeDeCo:AI自动化排版、设计、美化海报
  • 【c++丨STL】map/multimap的使用
  • 冲刺蓝桥杯之速通vector!!!!!
  • SpringBoot+Vue3快速开发平台、自研工作流引擎