步骤①:
确保 VS2012 和 Mysql 软件能正常运行
VS2015/VS2010等其它版本应该都行,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 STEPBYSTEP
int main(void)
{
cout<<"****************************************"<<endl;
#ifdef STEPBYSTEP
system("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 STEPBYSTEP
system("pause");
#endif
//初始化数据结构
if(mysql_init(&mydata)!=NULL)
cout<<"mysql_init() succeed"<<endl;
else
{
cout<<"mysql_init() failed"<<endl;
return -1;
}
#ifdef STEPBYSTEP
system("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 STEPBYSTEP
system("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 STEPBYSTEP
system("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 STEPBYSTEP
system("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 STEPBYSTEP
system("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 STEPBYSTEP
system("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"文件
给个下载链接:https://download.csdn.net/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 '新密码';
搞定