VSCode环境下连接 MySQL 8.0 数据库 (C++)

前言

时隔了不知道多久,笔者需要在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文件的参考:

Cobol 复制代码
{
    "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寻找

并且将检查编译器,是否正确指定为 g++

2. 将 libmysql.dll 放到待编译的cpp文件同目录下

这个 dll 文件在上述lib目录中,复制到工程目录下即可。

如下所示:

3. 编写示例程序:

代码如下:

cpp 复制代码
#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指令:

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文件编译&运行:

在VSCode中,对示例工程进行运行和调试

可以看到打印 DB 连接成功,正确调用 mysql_query() 。

(由于笔者这里已经写入过一次该数据,接收到的Info是提示我该主键已经存在。读者第一次运行成功则不会打印该信息)

进入 Command Line Client 中,通过select指令进行查看:

可以看到该条信息已经被插入,至此完成。

相关推荐
DarkAthena3 分钟前
【ORACLE】记录一些ORACLE的merge into语句的BUG
数据库·oracle·bug
江沉晚呤时32 分钟前
深入了解C# List集合及两种常见排序算法:插入排序与堆排序
windows·sql·算法·oracle·c#·排序算法·mybatis
大新新大浩浩35 分钟前
arm64适配系列文章-第三章-arm64环境上mariadb的部署
数据库·arm·mariadb
聪明的墨菲特i37 分钟前
SQL进阶知识:九、高级数据类型
xml·数据库·sql·mysql·json·空间数据类型
oioihoii43 分钟前
金仓数据库 KingbaseES 产品深度优化提案:迈向卓越的全面升级
数据库·性能优化·金融·金仓数据库 2025 征文·数据库平替用金仓
艺杯羹1 小时前
JDBC 批处理与事务处理:提升数据操作效率与一致性的密钥
数据库·mysql·jdbc·事务处理·批处理数据
猫咪-95271 小时前
【金仓数据库征文】——选择金仓,选择胜利
数据库·金仓数据库 2025 征文·数据库平替用金仓
努力进修2 小时前
【金仓数据库征文】-金仓数据库性能调优 “快准稳” 攻略:实战优化,让数据处理飞起来
数据库·人工智能·金仓数据库 2025 征文·数据库平替用金仓
User_芊芊君子3 小时前
【金仓数据库征文】金仓数据库KingbaseES:千行百业国产化征程中的璀璨之星
数据库·数据库平替用金仓·金仓数据库2025征文
User_芊芊君子4 小时前
【金仓数据库征文】金仓数据库KingbaseES:在技术与人文交织中开拓信创未来
数据库·数据库平替用金仓·金仓数据库2025征文