菜鸟生成记(91)
VS2022在win7上安装时,会提示“部分功可能会失效”,但是目前win7运行VS2022未发现异常,能用win10尽量用win10;(我的电脑太辣鸡了,一直没更新win10,不常用,懒得更新,一直白嫖实验室的台式机)
按照上面的教程配置文件后,还有可能出现另一个问题(win7和win10均出现该问题),
“由于找不到libmysql.dll,无法继续执行代码。重新安装程序可能会解决此问题。”

libmysql.dll文件是MySQL的动态链接库文件,缺少此文件数据库无法正常工作
解决方法
找到mysql的安装目录
(1)C:\Program Files\MySQL\MySQL Server 8.0\lib
复制lib文件夹下有个libmysql.dll
(2)将libmysql.dll粘贴到
C:\WINDOWS\System32
System32文件夹中
至此文件配置基本完成,然后之后出现一些问题例如:0x0000011与0x0013123地址访问冲突等,大概率是mysql语句写错了,也可能是操作空指针(select查询会返回结果集,其他返回的是空集),C++的异常抛出信息有点儿含糊不清(这就要凭经验Debug了,疯狂试错)
#include"mysql_option.h"
int main(){
mysql_option();
return 0;
}
#include<iostream>
#include<mysql.h>
#include<string>
using namespace std;
void getConnection(MYSQL& mysql, string host, string userName, string passWord, string dbName);
void select(MYSQL& mysql, string op);
void insert(MYSQL& mysql, string op);
void update(MYSQL& mysql, string op);
void delete_(MYSQL& mysql, string op);
int mysql_option();
#include"mysql_option.h"
void getConnection(MYSQL& mysql, string host, string userName, string passWord, string dbName) {
mysql_init(&mysql);
mysql_real_connect(&mysql, host.c_str(), userName.c_str(), passWord.c_str(), dbName.c_str(), 3306, 0, 0);
mysql_query(&mysql, "SET NAMES GB2312");
}
void select(MYSQL& mysql, string op) {
mysql_query(&mysql, op.c_str());
MYSQL_ROW row;
MYSQL_RES* res = mysql_store_result(&mysql);
int count1 = mysql_num_rows(res);
int count2 = mysql_num_fields(res);
int k = 1;
cout << "共:" << count1 << "条记录" << endl;
while ((row = mysql_fetch_row(res)) != NULL) {
printf("第 %-3d 行:",k);
for (int i = 0; i < count2; ++i)
printf("%-10s\t", row[i]);
cout << endl;
++k;
}
}
void insert(MYSQL& mysql, string op) {
int count = 0;
mysql_query(&mysql, op.c_str());
count = mysql_affected_rows(&mysql);
printf("插入:%d 条记录\n", count);
}
void update(MYSQL& mysql, string op) {
int count = 0;
mysql_query(&mysql, op.c_str());
count = mysql_affected_rows(&mysql);
printf("更新:%d 条记录\n", count);
}
void delete_(MYSQL& mysql, string op) {
int count = 0;
mysql_query(&mysql, op.c_str());
count = mysql_affected_rows(&mysql);
printf("删除:%d 条记录\n", count);
}
int mysql_option() {
MYSQL mysql;
string host = "localhost";
string userName = "root";
string passWord = "root";
string dbName = "zyh1";
getConnection(mysql, host, userName, passWord, dbName);
update(mysql, "update stuzyh set 院部='信工' where 院部='xinggong'");
select(mysql, "select * from stuzyh");
mysql_close(&mysql);
return 0;
}
