C++连接数据库(DataBase)之加载外部依赖项


C++在语言层面上没有提供数据库操作,我们需要使用Orcle公司对MySQL提供的接口对其进行操作,这就需要使用外部依赖项,因此我们需要进行一些配置。

在VS中进行配置

一、 先找到VS的解决方案资源管理器:

在这里插入图片描述

可能新手在关闭了它之后就找不到了,如果我们需要再次找到它,首先需要找到视图:
在这里插入图片描述

然后在其下拉菜单中找到解决方案资源管理器,单击它就好了:
在这里插入图片描述

二、 找到“属性”,进行附加项配置

在这里插入图片描述

找到属性之后,单击进入;
到这里,就要正式开始进行附加项配置了:
找到:“C/C++” => “常规” => “附加包含目录”
在这里插入图片描述

然后就开始”编辑附加包含目录“:
在这里插入图片描述

按照下图步骤选择,就会成功进入”系统文件资源管理器“:
在这里插入图片描述

然后找到本机中MySQL的安装文件夹,其中能够找到:MySQL Server 8.0(或类似这种),我们所需要的头文件和库文件都在其中
此处我们找到MySQL Server 8.0/include,将其加入到附加包含目录中:
完成后应该就是上图那样。
接下来,找到:“链接器” => “常规”
在这里插入图片描述

选择MySQL Server 8.0/lib,这一步的操作和刚才加载include的操作类似,只是这是加载lib目录,也就是库目录
在这里插入图片描述

然后就是跟刚刚类似的编辑操作:添加附加依赖项"libmysql.lib"在这里插入图片描述

这样大致就好了。

三、 移植libmysql.dll目录

只是完成刚刚的操作还是没法进行数据库连接的,当我们运行程序的时候会报错,显示:”无法找到libmysql.dll文件,我们需要在刚刚的MySQL Server 8.0/lib文件夹中找到这个文件:
在这里插入图片描述

将其复制粘贴到本项目的Debug文件夹中,这样就行了,在这里,我这个文件的存放路径即为:“C:\Users\Lenovo\Desktop\demo\connectMysql\x64\Debug\libmysql.dll”
这样就完成了外部依赖项的配置。

在VSCode中进行配置

VSCode我觉得是不太适合用来进行项目编写的,因此在写项目的时候我一般使用VS,但是VSCode的轻量级又是让我爱不释手的地方,在VSCode中连接数据库我一般是直接将需要使用到的文件进行一个复制操作,放在项目文件下

我一般喜欢使用不同的文件夹来包含不同的文件:bin(存放源文件),include(存放包含文件),lib(存放库文件),output(存放二进制输出文件),例如这样:在这里插入图片描述

依赖文件的移动

在连接数据库的时候,我们使用到了mysql.h文件,因此我们需要将MySQL Server 8.0/include完全拷贝进我们的项目文件中(不能只将mysql.h拷贝,我试验过了,mysql.h中还使用了大量的其他文件,一个个复制黏贴搞起来会很麻烦),这个文件夹就可以放在一个叫做include的文件夹中,并且这么做也是合乎规范的。这步做完后应该是这样的:在这里插入图片描述

库文件的移动

完成了上面这步,我们的文件中就已经能够找到mysql.h文件了,但是我们仍然不能正常编译运行文件,因为我们只是引用了头文件,而mysql.h的实现代码都在库文件中,即:mysql.dll和mysql.lib,这两个文件肯定已经不陌生了,一个是动态库一个是静态库,我们需要在MySQL Server 8.0/lib中找到这两个文件,并将其放在我们项目的lib文件中,除此之外还要找到mysqlclient.lib,这个文件负责与MySQL服务器进行通信,就像这样:
在这里插入图片描述
我们也可以只是用dll和lib中的其中一个,这个道理也很简单我相信大家都能理解,如果不能理解就去看看什么是动态库什么是静态库了吧。

可能遇到的问题

在这么做完之后,我们在bin中编写我们的源文件,按照道理来说就是能够正常运行的了,但是我们照常点击运行却会报错:

在这里插入图片描述
这是因为在vscode中,它实际上是通过终端进行操作的,跟我们在Linux系统中使用命令行是一样的,这一点我们通过C++插件的配置就能看出来(tasks.json):
在这里插入图片描述
因此,如果不想重写tasks.json中的配置的话,我们就需要使用命令行,像在Linux中编译C++程序一样:

g++ ./bin/main.cpp -Llib -lmysql -Iinclude -o  ./output/main.exe

当然,我们也可以使用makefile,但是这似乎需要一些额外的配置。

重点!!!!!!!(必看!!!!)

vscode中能够正常编写文件,但是无法运行!!!!!这是因为MySQL Connection需要依赖VC,需要借助VS的链接器才能够正常运行,应该有能使其可在VSCode下编写的办法,但是我能力有限,找不出来,大家最好还是使用VS或者Qt进行项目编写吧