vs2017 连接mysql 8.0
我的环境:vs2017 64bit + mysql 8.0 64 bit(完整版)
1.把 libmysql.dll 复制到 xxx.vcxproj 的同级目录,libmysql.dll 在安装mysql安装目录下找,我的在C:\Program Files\MySQL\MySQL Server 8.0\lib文件夹里。
放到这个位置:
libmysql.lib 拷贝到 与xxx.sln 同级目录的 自己新建的lib文件夹下(工程文件夹的其他位置均可,加载的时候对应好即可)。
2.把需要用的头文件拷贝到工程目录下:用到C:\Program Files\MySQL\MySQL Server 8.0\include文件夹下的所有头文件。
head文件夹是自己创建的,在别的位置也可以。
3.在工程上点击右键–>属性
将l连接所需mysql相关头文件包含进去,点击Vc++目录–>包含目录
根据.h文件位置写。我放在 xxx.vcxprojt同级目录的自建文件夹head下,所以绝对路径为 ./head
点击 链接器–>常规–>附加库目录,输入libmysql.lib的绝对路径。我的libmysql.lib放在lib文件夹下
相对于 xxx.vcxproj 来说,路径为 …\lib
点击 链接器–>输入–>附加依赖库,输入 libmysql.lib,确定
代码:
// tmysql.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。
//
#include <stdio.h>
#include <iostream>
#include "mysql.h"
using namespace std;
//#include <mysql.h> 如果配置ok就可以直接包含这个文件
int main(void)
{
MYSQL mysql; //一个数据库结构体
MYSQL_RES* res; //一个结果集结构体
MYSQL_ROW row; //char** 二维数组,存放一条条记录
//初始化数据库
mysql_init(&mysql);
//设置编码方式
mysql_options(&mysql, MYSQL_SET_CHARSET_NAME, "gbk");
//连接数据库
//判断如果连接失败就输出连接失败。
//注意你连接的账户名密码
if (mysql_real_connect(&mysql, "localhost", "root", "root", "mysql", 3306, NULL, 0) == NULL)
cout << "disconnect!" << endl;
//注意你连接的账户名密码
//注意你连接的账户名密码
//注意你连接的账户名密码
//注意你连接的账户名密码
else
cout << "success" << endl;
//查询数据
mysql_query(&mysql, "select * from t_worker");
//获取结果集
res = mysql_store_result(&mysql);
//增加数据
mysql_query(&mysql, "insert into t_worker values(9,'HHH',9000,'2020-06-07 10:23:56')");
//删除数据
mysql_query(&mysql, "delete from t_worker where number<3000");
mysql_query(&mysql, "delete from t_worker where date>'2021-01-12 10:10:10'");
//修改数据
mysql_query(&mysql, "update t_worker set number=9999 where date>'2021-01-01 10:10:10'");
//显示数据
printf("ID\t姓名\t工资\t加入日期 \n");
//给ROW赋值,判断ROW是否为空,不为空就打印数据。
while (row = mysql_fetch_row(res))
{
printf("%s ", row[0]);//打印ID
printf("\t%s", row[1]);//打印姓名
printf("\t%s", row[2]);//打印工资
printf("\t%s\n", row[3]);//打印日期
}
//释放结果集
mysql_free_result(res);
//关闭数据库
mysql_close(&mysql);
//停留等待
system("pause");
return 0;
}
可以通过navacat或者命令行看对数据库操作是否成功。