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指令进行查看:

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

相关推荐
DB哥讲数据库2 分钟前
【达梦数据库安装教程】超详细图文讲解-附达梦安装包
数据库·oracle
Hoxy.R44 分钟前
【金仓数据库产品体验官】KingbaseES V9R2C16 坏块检测与修复完整测试流程
数据库
bbq烤鸡2 小时前
Win11 资源管理器“白条“修复报告
windows
太理摆烂哥2 小时前
MySQL数据库基础
数据库·mysql
wuhuhuan2 小时前
JMeter 连接数据库并取值(JDBC 实战)
数据库·jmeter
10mAh3 小时前
【Java】ArrayList 遍历删除为什么报错?三种写法与漏删复现
java·开发语言·windows
小羊没烦恼!3 小时前
OS X 上使用.NET开发应用程序
开发语言·前端·数据库·人工智能·c#·策略模式
Rain的Java大神之路3 小时前
[特殊字符]8年Java老兵转型AI Agent:90%的人挂在同一个坑,根本不用学Python!(万字实战复盘,建议收藏)
java·数据库·人工智能·后端·python·spring·ai编程
码途行者4 小时前
缓存一致性难题:Redis 和数据库如何做到数据一致?
数据库·redis
SelectDB4 小时前
Doris VARIANT 速查:类型映射、建表写法、索引配置与常见注意点
大数据·数据库·数据分析