前言
时隔了不知道多久,笔者需要在Windows环境下通过VSCode重新搭建一个简单的数据库连接的Cpp工程。由于VSCode和MySQL的版本和之前连通时发生了一些变化,无需用MySQL Connector,环境配置的细节和之前也不尽相同,因此笔者找了一些资料,重新整理了一遍,以便重现。
本文推荐读者有对基本的MySQL规则了解,以及有VSCode基础的情况下进行实操。对于MySQL和VSCode的安装,请读者自行根据其他网络资料进行搭建,本文不再赘述。
1. 进入VSCode,配置两个json文件
1)c_cpp_properties.json
打开vscode,按下ctrl+shit+p,如下,选择编辑C/C++配置,会自动创建一个名为c_cpp_properties.json 的文件
读者需要在 c_cpp_properties.json 文件中设置 includePath,以正确包含.h头文件
之后,需要确认一下编译器是否是 g++,而非 gcc。如果是 gcc,需要将红框中的部分改为g++,其余地方的gcc暂且可以不管。
这里给出c_cpp_properties.json文件的参考:
{"configurations": [{"name": "Win32","includePath": ["${workspaceFolder}/**","C:\\Program Files\\MySQL\\MySQL Server 8.0\\include"],"defines": ["_DEBUG","UNICODE","_UNICODE"],"compilerPath": "C:\\msys64\\ucrt64\\bin\\g++.exe","cStandard": "c17","cppStandard": "gnu++17","intelliSenseMode": "windows-gcc-x64"}],"version": 4
}
2)tasks.json
tasks.json 的获取可以通过按下ctrl+shit+d,在运行和调试下通过创建launch.json文件
在这个操作后,得到 launch.json 的同时,可以得到 task.json
tasks.json 用来定义 g++ 的编译指令, -I 和 -L 则指定了编译时 include 头文件和 lib 链接的位置。通常,如果 -I 的内容设置错误,会导致程序中的类或函数无法找到;如果 -L 的内容设置错误,则容易出现运行时的链接错误。
我们找到 MySQL Server 安装路径下所包含的 lib 和 include 目录,将他们包含到这里
MySQL Server 安装路径可以右键Command Line Client寻找
2. 将 libmysql.dll 放到待编译的cpp文件同目录下
这个 dll 文件在上述lib目录中,复制到工程目录下即可。
3. 编写示例程序:
#include<iostream>
#include <mysql.h>int main(){MYSQL *mysql = mysql_init(0);if(!mysql_real_connect(mysql,"localhost","user","password","mybase",0,0,0)) // 注意改成自己的{printf("连接数据库出错:%s",mysql_error(mysql)); return -1; }std::cout << "DB connect success" << std::endl;if(mysql_query(mysql,"insert into mentor values ('abandon','zzz')")){printf("Info : %s",mysql_error(mysql));}return 0;
}
这个例子中要求你先在Mysql中建立一个名为mybase的数据库,以及一个名为mentor的表。
可以先通过MySQL的Command Line Client进行打开,执行以下SQL指令:
-- 查看数据库,进入数据库,查看表
show databases;
use mybase;
show tables;-- 创建表 mentor
CREATE TABLE `mentor` (`name` varchar(20) NOT NULL,`t_name` varchar(100) NOT NULL,PRIMARY KEY (`name`),UNIQUE KEY `t_name` (`t_name`)
)
4. 对cpp文件编译&运行:
可以看到打印 DB 连接成功,正确调用 mysql_query() 。
(由于笔者这里已经写入过一次该数据,接收到的Info是提示我该主键已经存在。读者第一次运行成功则不会打印该信息)