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();
没有理由为此分配堆。