1500字范文,内容丰富有趣,写作好帮手!
1500字范文 > 教程:Visual Studio 连接 MySQL 数据库(包含常见错误及解决方法)

教程:Visual Studio 连接 MySQL 数据库(包含常见错误及解决方法)

时间:2018-07-07 12:16:00

相关推荐

教程:Visual Studio 连接 MySQL 数据库(包含常见错误及解决方法)

步骤①:

确保VS 和 Mysql 软件能正常运行

VS/VS等其它版本应该都行,Mysql也是

步骤②:

添加<mysql.h>头文件到VS库

之后添加包含目录如下

一般的mysql都默认在C://program files里面,之后按照图中的路径选择mysql.h所在的文件夹即可,下同

步骤③:

添加库文件"libmysql.lib"

步骤④:

其实到这里就搞定了,不过还需要进行测试,新建cpp输入以下代码:

#include<winsock.h>#include<iostream>#include<string>#include<mysql.h>using namespace std;#pragma comment(lib, "ws2_32.lib")#pragma comment(lib, "libmysql.lib")//单步执行,不想单步执行就注释掉//#define STEPBYSTEPint main(void){cout<<"****************************************"<<endl;#ifdef STEPBYSTEPsystem("pause");#endif//必备的一个数据结构MYSQL mydata;//初始化数据库if(mysql_library_init(0, NULL, NULL)==0)cout<<"mysql_library_init() succeed"<<endl;else{cout<<"mysql_library_init() failed"<<endl;return -1;}#ifdef STEPBYSTEPsystem("pause");#endif//初始化数据结构if(mysql_init(&mydata)!=NULL)cout<<"mysql_init() succeed"<<endl;else{cout<<"mysql_init() failed"<<endl;return -1;}#ifdef STEPBYSTEPsystem("pause");#endif//在连接数据库之前,设置额外的连接选项//可以设置的选项很多,这里设置字符集,否则无法处理中文if(mysql_options(&mydata, MYSQL_SET_CHARSET_NAME, "gbk")==0)cout<<"mysql_options() succeed"<<endl;else{cout<<"mysql_options() failed"<<endl;return -1;}#ifdef STEPBYSTEPsystem("pause");#endif//连接数据库if(mysql_real_connect(&mydata, "localhost", "root", "chensijie", "sct", 3306, NULL, 0)!=NULL)//这里的地址,用户名,密码,端口可以根据自己本地的情况更改cout<<"mysql_real_connect() succeed"<<endl;else{cout<<"mysql_real_connect() failed: "<<mysql_error(&mydata)<<endl;return -1;}#ifdef STEPBYSTEPsystem("pause");#endif//sql字符串string sqlstr;//创建一个表sqlstr = "CREATE TABLE IF NOT EXISTS user_info";sqlstr += "(";sqlstr += "user_id INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY COMMENT 'Unique User ID',";sqlstr += "user_name VARCHAR(100) CHARACTER SET gb2312 COLLATE gb2312_chinese_ci NULL COMMENT 'Name Of User',";sqlstr += "user_second_sum INT UNSIGNED NOT NULL DEFAULT 0 COMMENT 'The Summation Of Using Time'";sqlstr += ");";if(mysql_query(&mydata, sqlstr.c_str())==0)cout<<"mysql_query() create table succeed"<<endl;else{cout<<"mysql_query() create table failed"<<endl;mysql_close(&mydata);return -1;}#ifdef STEPBYSTEPsystem("pause");#endif//向表中插入数据sqlstr = "INSERT INTO user_info(user_name) VALUES('公司名称'),('一级部门'),('二级部门'),('开发小组'),('姓名');";if(mysql_query(&mydata, sqlstr.c_str())==0)cout<<"mysql_query() insert data succeed"<<endl;else{cout<<"mysql_query() insert data failed"<<endl;mysql_close(&mydata);return -1;}#ifdef STEPBYSTEPsystem("pause");#endif//显示刚才插入的数据sqlstr = "SELECT user_id,user_name,user_second_sum FROM user_info";MYSQL_RES *result = NULL;if(mysql_query(&mydata, sqlstr.c_str())==0){cout<<"mysql_query() select data succeed"<<endl;//一次性取得数据集result = mysql_store_result(&mydata);//取得并打印行数int rowcount = mysql_num_rows(result);cout<<"row count: "<<rowcount<<endl;//取得并打印各字段的名称unsigned int fieldcount = mysql_num_fields(result);MYSQL_FIELD *field = NULL;for(unsigned int i=0;i<fieldcount;i++){field = mysql_fetch_field_direct(result, i);cout<<field->name<<"\t\t";}cout<<endl;//打印各行MYSQL_ROW row = NULL;row = mysql_fetch_row(result);while(NULL!=row){for(int i=0;i<fieldcount;i++)cout<<row[i]<<"\t\t";cout<<endl;row = mysql_fetch_row(result);}}else{cout<<"mysql_query() select data failed"<<endl;mysql_close(&mydata);return -1;}#ifdef STEPBYSTEPsystem("pause");#endif//删除刚才建的表sqlstr = "DROP TABLE user_info";if(mysql_query(&mydata, sqlstr.c_str())==0)cout<<"mysql_query() drop table succeed"<<endl;else{cout<<"mysql_query() drop table failed"<<endl;mysql_close(&mydata);return -1;}mysql_free_result(result);mysql_close(&mydata);mysql_server_end();//system("pause");return 0;}

更改好账户名密码地址后就可以运行了,最终成功应该是如下界面:

代码是网上找到的,进行了一些修改

中间会遇到的问题及解决方案:

①找不到头文件<stdbool.h>

直接在头文件<mysql.h>所在文件夹里新建一个头文件<stdbool.h>内容直接留空就行,这是老版本遗留下来的问题了

②:编译失败!遇到一大堆无法解析的外部符号

因为Mysql是64位的,而你的VS是32位的所以不兼容

可以修改VS→64位如下:

也可以去网上下载32位的"libmysql.lib"和"libmysql.dll"文件

给个下载链接:/download/second_riven/7704817

③:无法启动此程序,因为计算机丢失了libmysql.dll文件

将lib目录下的"libmysql.dll"拷贝到工程目录下的"debug"文件下

④:数据库连接失败,mysql_real_connect()返回NULL

原因很多了,mysql_error()会返回错误报告,并百度搜索该错误报告应该都能解决问题

检查一下是否密码错误、地址错误等

一个很经典的错误是:mysql8.0 Authentication plugin 'caching_sha2_password' cannot be loaded

这是因为你的Mysql是8.0版本的,而8.0改变了身份验证插件

解决方法:打开你的Mysql,通过以下语句修改密码:

#ALTER USER root@localhost IDENTIFIED WITH mysql_native_password BY '新密码';

搞定

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