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。
  计算机。尝试重新安装此程序以解决此问题。


太混乱了!我尝试了多种连接方式。总会有错误消息。

最佳答案

所有mysql_*函数都返回一个指示成功或失败的值。您的代码无视它们。在继续下一个呼叫之前,您应该确认呼叫是否成功。我想您实际上无法连接到数据库,并且您的MYSQL仍然无效。

使用调试器。在黑暗中编码毫无意义。使用调试器,您将快速查看MYSQL对象是否已正确初始化。

另一件事:

sqlConnection *sqlC = new sqlConnection();


没有理由为此分配堆。

09-30 09:29