1500字范文,内容丰富有趣,写作好帮手!
1500字范文 > Visual Studio C++连接MySql数据库(win7和win10亲测有效)

Visual Studio C++连接MySql数据库(win7和win10亲测有效)

时间:2021-01-05 17:29:16

相关推荐

Visual Studio  C++连接MySql数据库(win7和win10亲测有效)

菜鸟生成记(91)

VS在win7上安装时,会提示“部分功可能会失效”,但是目前win7运行VS未发现异常,能用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\System32System32文件夹中

至此文件配置基本完成,然后之后出现一些问题例如: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 连接的实例对象//连接MySqlmysql_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','','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;}

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。