c/c++访问数据库:
Windows平台下c/c++访问mysql数据库的方法有很多种,这里我介绍我认为比较简单的一种方式。以vs2019访问MySQL8.0为例
方式如下:
第一步,确定MySQL安装路径下的相关库文件和头文件是否存在:
打开mysql安装目录默认安装目录:打开mysql的安装目录,默认安装目录如下:C:\Program Files\MySQL\MySQL Server 8.0,确认lib 目录和include 目录是否存在。因为我们在写代码访问MySQL8.0时需要用到里面的库文件和头文件,所以要确保这两个文件是否存在。
第二步,新建一个空项目:
打开vs2019,新建一个空项目
这里我们选择空项目:
项目名称自己随便取一个,项目路径选择一个自己记得的路径就行
然后在项目里面新建一个.cpp文件
**第三步,环境配置:**环境配置很重要,如果环境配置出问题,很有可能在编译过程中没法通过编译,首先我们需要将解决方案平台设置成x64的:
,
然后右击项目名称选择“属性”
点击后进入属性页表并选择vc++目录:
然后将mysql8.0安装路径下的头文件和库文件所在的路径分别拷贝到VC++目录里面的包含目录和库目录里面
进入如下界面
将include安装路径拷贝到包含目录后点击“确定”,同样点击“库目录”将“lib”的安装路径拷贝进来:
点击确定
其次还需要添加附加依赖项,点击“链接器”将其扩展组件展开,然后选择并点击“输入”,然后点击弹出来的【附加依赖项】,并且将库文件“libmysql.lib”拷贝进来,默认路径:C:\Program Files\MySQL\MySQL Server 8.0\lib
【libmysql.lib】文件拷贝完毕后再点击【确定】->【应用】即可
最后只需要将【libmysql.dll】动态链接库拷贝到c盘下的Windows下的system32里面
执行如下拷贝
因为我之前配置过,所以会出现【替换目标中的文件】,如果是第一次配置是不会出现这样的情况的,这一步执行完毕之后我们就可以快乐的下代码访问MySQL数据库啦
第四步,在我们的项目中输入如下代码:
#include <stdio.h>
#include <mysql.h> // mysql 文件
int main(void) {
MYSQL mysql; //数据库句柄
MYSQL_RES* res; //查询结果集
MYSQL_ROW row; //记录结构体
//初始化数据库
mysql_init(&mysql);
//设置字符编码
mysql_options(&mysql, MYSQL_SET_CHARSET_NAME, "gbk");
//连接数据库
if (mysql_real_connect(&mysql, "127.0.0.1", "root",
//59563183zxXYL", "test"分别是我的数据库登录密码和表所在的数据名称
//这里替换成自己的的数据库等路密码和自己所建的数据库名称即可
"59563183zxXYL", "test", 3306, NULL, 0) == NULL) {
printf("错误原因: %s\n", mysql_error(&mysql));
printf("连接失败!\n");
exit(-1);
}
//查询数据
int ret = mysql_query(&mysql, "select * from student;");
***//student是自己在数据库中所建的表名***
printf("ret: %d\n", ret);
//获取结果集
res = mysql_store_result(&mysql);
//给 ROW 赋值,判断 ROW 是否为空,不为空就打印数据。
while (row = mysql_fetch_row(res)) {
printf("%s ", row[0]); //打印 ID
printf("%s ", row[1]); //打印姓名
printf("%s ", row[2]); //打印班级
printf("%s \n", row[3]);//打印性别
}
//释放结果集
mysql_free_result(res); //关闭数据库
mysql_close(&mysql);
system("pause");
return 0;
}
【注意】代码中的数据库登录名和数据库名称及表的名称不一样
输完上面的代码之后就可以编译运行我我们德程序啦,运行结果如下:
控制台访问结果:
MySQL数据库表中的查询结果:
结果一模一样
【注意】控制台程序运行之前必须保证mysql是出于启动状态,并且相应的数据库和表要存在才能访问成功!