创建数据库连接时发生访问读取冲突 我试图在C++中编写一个基本的HTTP服务器,我需要从本地数据库获取信息。 我使用MySQL C++连接器和遗留API,但是在连接创建时,我收到这个异常:

创建数据库连接时发生访问读取冲突 我试图在C++中编写一个基本的HTTP服务器,我需要从本地数据库获取信息。 我使用MySQL C++连接器和遗留API,但是在连接创建时,我收到这个异常:,c++,mysql,C++,Mysql,HTTP_SERVER.exe中0x00007FF69031416(vcruntime140d.dll)处未处理的异常:0xC000005:访问冲突读取位置0xFFFFFFFFFFFF。 使用此代码: void Database\u connection::connect(sql::SQLString&host,sql::SQLString&username, sql::SQLString和密码,sql::SQLString和DBName){ 试一试{ sql::Driver*sqlDriver

HTTP_SERVER.exe中0x00007FF69031416(vcruntime140d.dll)处未处理的异常:0xC000005:访问冲突读取位置0xFFFFFFFFFFFF。

使用此代码:

void Database\u connection::connect(sql::SQLString&host,sql::SQLString&username,
sql::SQLString和密码,sql::SQLString和DBName){
试一试{
sql::Driver*sqlDriver=get_Driver_instance();
//可补偿连接
if(sqlDriver!=nullptr){
connection=sqlDriver->connect(主机、用户名、密码);
}
//使用给定的数据库
连接->设置模式(DBName);
}捕获(sql::SQLE异常){

std::cout很可能是驱动程序引发了一个从
sql::SQLException
派生的异常。当您按值捕获时,您无法捕获派生的异常

相反,您应该通过引用接受(这是一条一般规则:按值抛出,按引用捕获)。这样您就可以访问
what()
字符串,该字符串将更详细地告诉您实际出了什么问题

此外,
get\u driver\u实例
也可能引发异常,但对的调用驻留在try-catch块之外


最后,使用不同的变量
driver
(成员变量?–声明缺失)打开连接,而不是将驱动程序对象分配给的变量(分配给局部变量的对象正在泄漏!).

我自己修复了它,仍然不知道问题出在哪里,但我从相应的库重新下载了release和debug库,并用相应的库重新构建了它

变量
驱动程序是什么
?你的意思是
catch(sql::SQLException&e)
,如果是这种情况,它不会捕获抛出的异常;还尝试了
catch(标准::例外和例外)
这也不能捕获异常。@LeonardoMontagner“不工作”不是很精确。到底是什么不工作?@LeonardoMontagner注意到引用捕获也是如此。抱歉,不工作意味着它不能捕获异常,程序只是停止。错误甚至在我在函数中声明sqlDriver之前就出现了,但对于c拉里蒂,为了确保它确实有效,我声明了另一个驱动程序变量。此外,该问题在调试模式(使用调试库)中没有出现,我还尝试使用调试库构建发布模式,但也没有成功。无论如何,感谢您的帮助,我通过更新库解决了问题。