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 计算机。尝试重新安装此程序以解决此问题。
这太混乱了!我尝试了很多方法来连接。始终存在错误消息。
答案 0 :(得分:1)
所有mysql_*
函数都返回一个表示成功或失败的值。你的代码忽视了它们。在进行下一次通话之前,您应该确认通话是否成功。我猜测你实际上无法连接到数据库而你的MYSQL
仍然无效。
使用调试器。在黑暗中编码是没有意义的。使用调试器,您将很快看到您的MYSQL
对象是否已正确初始化。
另一件事:
sqlConnection *sqlC = new sqlConnection();
没有理由将它分配给堆。