VS2013 c ++连接mysql --- Libmysql.dll中的错误

时间:2015-12-31 00:24:42

标签: c++ mysql dll

main.cpp

#include "sqlConnection.h"
#include <iostream>
int main() {
    sqlConnection *sqlC = new sqlConnection();
    sqlC->ifSucceed();
}

sqlConnection.h

#include <Windows.h>
#include <stdio.h>
#include <winsock.h>
#include "mysql.h"
#include <iostream>
#pragma once

using namespace std;

class sqlConnection
{
public:
    sqlConnection();
    ~sqlConnection();
    void ifSucceed();
    MYSQL mysql;
    MYSQL_RES *result;
    MYSQL_ROW row;
};

sqlConnection.cpp

#include "sqlConnection.h"

sqlConnection::sqlConnection()
{
    mysql_init(&mysql);
    mysql_real_connect(&mysql, "xxxxx", "xxxx", "xxxx", "librarySys", 7726, NULL, 0);   
}

void sqlConnection::ifSucceed() {
    char *sql = "select * from tb_bookcase";
    mysql_query(&mysql, sql);
    result = mysql_store_result(&mysql);
    if ((row = mysql_fetch_row(result)) != NULL) {
        cout << "succeed!" << endl;
    } else {
        cout << "faiiiiiiiiled" << endl;
    }
}

sqlConnection::~sqlConnection() {
}
  

如果源文件中存在libmysql.dll错误消息:那里   是未经处理的异常:0x00007FFED00441E6(libmysql.dll)(在   librarySys.exe)0xC0000005:读取时发生访问冲突   0x0000000000000010。

然后我必须停下来。 VS给我选择,改变PDB,二进制文件路径并重试。但我不知道该怎么做。

如果删除libmysql.dll,则错误消息为:

  

无法启动程序以丢失libmysql.dll   计算机。尝试重新安装此程序以解决此问题。

这太混乱了!我尝试了很多方法来连接。始终存在错误消息。

1 个答案:

答案 0 :(得分:1)

所有mysql_*函数都返回一个表示成功或失败的值。你的代码忽视了它们。在进行下一次通话之前,您应该确认通话是否成功。我猜测你实际上无法连接到数据库而你的MYSQL仍然无效。

使用调试器。在黑暗中编码是没有意义的。使用调试器,您将很快看到您的MYSQL对象是否已正确初始化。

另一件事:

sqlConnection *sqlC = new sqlConnection();

没有理由将它分配给堆。