菜鸟生成记(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 ;
}