admin管理员组文章数量:1646241
菜鸟生成记(91)
VS2022在win7上安装时,会提示“部分功可能会失效”,但是目前win7运行VS2022未发现异常,能用win10尽量用win10;(我的电脑太辣鸡了,一直没更新win10,不常用,懒得更新,一直白嫖实验室的台式机)
dalao的文件配置教程<----点这里
按照上面的教程配置文件后,还有可能出现另一个问题(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了,疯狂试错)
//main.cpp
#include"mysql_option.h"
int main(){
mysql_option();
return 0;
}
//mysql_option.h
#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();
//mysql_option.cpp
#include"mysql_option.h"
//与MySql数据库建立连接
void getConnection(MYSQL& mysql, string host, string userName, string passWord, string dbName) {
mysql_init(&mysql);// 初始化一个MYSQL 连接的实例对象
//连接MySql
mysql_real_connect(&mysql, host.c_str(), userName.c_str(), passWord.c_str(), dbName.c_str(), 3306, 0, 0);
//我在win7和win10都会出现中文乱码,修改数据库编码方式解决问题
mysql_query(&mysql, "SET NAMES GB2312");//修改mysql编码方式
//mysql_query(&mysql, "SET NAMES UTF8");
}
void select(MYSQL& mysql, string op) {//查询(op:mysql操作语句)
mysql_query(&mysql, op.c_str());
MYSQL_ROW row; //char** 二维数组,存放一条条记录
MYSQL_RES* res = mysql_store_result(&mysql);//返回结果集
int count1 = mysql_num_rows(res);//获取记录个数(参数为结果集行数,仅select可用)
int count2 = mysql_num_fields(res);//返回字段个数(表的列数)
int k = 1;
cout << "共:" << count1 << "条记录" << endl;
while ((row = mysql_fetch_row(res)) != NULL) {//获取结果集(res)中的一行,并且指针指向下一行
printf("第 %-3d 行:",k);
for (int i = 0; i < count2; ++i)
printf("%-10s\t", row[i]);//输出字段值
//cout << string(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);//参数为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);//参数为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);//参数为mysql结构体(返回操作影响行数)
printf("删除:%d 条记录\n", count);
}
int mysql_option() {
MYSQL mysql;//数据库结构体
string host = "localhost";
string userName = "root";//这是我的mysql账户
string passWord = "root";///这是我的mysql账户密码
string dbName = "zyh1";//这是我的mysql数据库名
getConnection(mysql, host, userName, passWord, dbName);
//insert(mysql, "insert into stuzyh values('xinggong','2021','zyh')");
//delete_(mysql, "delete from stuzyh where 姓名='zyh'");
update(mysql, "update stuzyh set 院部='信工' where 院部='xinggong'");
select(mysql, "select * from stuzyh");//只有查询才有结果集
mysql_close(&mysql); // 释放一个MYSQL 连接
return 0;
}
版权声明:本文标题:Visual Studio 2022 C++连接MySql数据库(win7和win10亲测有效) 内容由热心网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:https://m.elefans.com/xitong/1729420591a1200536.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论