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文件的参考:

{"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. 编写示例程序:

代码如下:

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

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

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

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

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

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

        

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/146355.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

简单有效关于msvcp140.dll丢失的解决方法,msvcp140.dll修复的方法原理及步骤

这篇文章将和大家分享几种msvcp140.dll丢失的解决方法&#xff0c;分析解决方法为什么能够通过这种方法进行修复成功&#xff0c;有效的将丢失的msvcp140.dll文件进行修复完成。 msvcp140.dll丢失&#xff1f;简单有效的解决途径 一、重新安装相关软件 原理 许多应用程序在安…

掌握Android开发新趋势:Jetpack与现代架构技术全解析

随着Android开发技术的不断进步&#xff0c;Jetpack和现代架构技术已成为构建高效、可维护应用的关键。本文将为您介绍一套全面的学习资料&#xff0c;包括大纲、PDF文档、源代码以及学习视频&#xff0c;帮助您深入理解Jetpack核心库、架构组件以及现代开发工具。 内容&#…

【C++】—— string模拟实现

前言&#xff1a; 学习了string的使用&#xff0c;总感觉了解不是很深厚&#xff1b;自己模拟实现string类来帮助自己理解。 这里只是实现了一部分内容&#xff08;并没有实现完整的string类&#xff09;。 先来实现string类里面的成员变量&#xff1a; #include<iostream…

草莓团队创造了o1 - Building OpenAI o1 (Extended Cut) 观后笔记

美妙的事物往往需要世界去创造&#xff0c;商业希望大模型越来越快给出回答。或许花费几个月几年的时间持续思考&#xff0c;大模型能够解决更复杂的问题&#xff0c;而不只是回答42 刚发现凌晨OpenAI发布了一个22多分钟的采访&#xff0c;将构建出O1的整个团队拉到一个小屋子&…

让Tkinter更美观:教你同步Tkinter窗口与弹窗图标(Tkinter同步主窗口与Messagebox的图标)

文章目录 📖 介绍 📖🏡 演示环境 🏡📒 文章内容 📒📝 步骤1:主窗口图标📝 步骤2:messagebox 图标📝 示例代码📝 实现原理与代码解释⚓️ 相关链接 ⚓️📖 介绍 📖 你有没有注意到,在开发软件图形界面时,会需要弹出一些提示框,而这些提示框的图标总…

695. 岛屿的最大面积

思路&#xff1a; 只有当前是陆地&#xff0c;才会构成岛屿 当前是陆地&#xff0c;进入回溯 往当前的上、下、左、右位置分别找陆地位置&#xff0c;为陆地 1>标记为2:代表已经遍历过的陆地 2>记录当前方向的陆地总数 以当前陆地组成的岛屿面积当前陆地面积向上的…

11----mtk芯片专用解锁工具 解除FRP 很小的工具 去除屏幕锁 免授权等等 工具预览与步骤解析

机型的FRP锁是谷歌账号锁。工具是mtk芯片使用 。可以去除当前机型的FRP和米账号重置。操作非常简单。但前提是联机驱动要装好。任何的工具联机驱动是关键。 工具功能选项 ★★★★★工具开发者说明功能与选项操作与资源下载 ★★★★★具体工具操作使用指南 工具联机界面与…

Type-C协议(CC检测原理)-CC1和CC2接电阻-数字和模拟耳机兼容

Type-C协议&#xff08;CC检测原理&#xff09;-CC1和CC2接电阻-数字和模拟耳机兼容 - Sean_hn - 博客园 (cnblogs.com)

4.变量与函数

作业系统链接 变量是Python中用于存储数据的命名标签&#xff0c;通过赋值&#xff0c;新值可以覆盖旧值&#xff0c;且数据类型不必相同。变量命名规则包括必须以字母或下划线开头&#xff0c;由字母、数字和下划线组成&#xff0c;大小写敏感&#xff0c;并避免使用保留字。函…

精选写作技巧!分享4款ai写毕业论文可以写出公式表格的软件

在撰写毕业论文时&#xff0c;AI写作工具可以极大地提高效率和质量。以下是四款值得推荐的AI软件&#xff0c;它们不仅能够帮助生成高质量的论文初稿&#xff0c;还能处理公式和表格等复杂内容。 传送门&#xff1a;https://www.aipaperpass.com?piclLGw 千笔-AIPassPaper是一…

Rx Strategist:智能体实现处方验证的方方面面,如适应症、剂量、药物相互作用

Rx Strategist&#xff1a;智能体实现处方验证的方方面面&#xff0c;如适应症、剂量、药物相互作用 秒懂大纲提出背景&#xff1a;拆解解法分析全流程分析创意 秒懂大纲 ├── 处方验证系统【主题】 │ ├── 背景和问题【问题描述】 │ │ ├── 现代药物复杂性对严…

2024年华为杯研究生数学建模竞赛研赛C题超详细解题思路+数据预处理代码分享

研赛题目由当年负责赛区【23年为东南大学&#xff0c;24年为山东大学】的相关老师每年独立命题&#xff0c;因此每年的题目在涉及的模型和知识点上都有很大差异。数模竞赛是百分比获奖&#xff0c;选择人数最多的也就意味着题目简单&#xff0c;会有很多新手、小白选择。我们只…

python有main函数吗

python和C/Java不一样&#xff0c;没有主函数一说&#xff0c;也就是说python语句执行不是从所谓的主函数main开始的。 当运行单个python文件时&#xff0c;如运行a.py&#xff0c;这个时候a的一个属性__name__是__main__。 当调用某个python文件时&#xff0c;如b.py调用a.p…

华为HarmonyOS地图服务 13 - 如何实现地图数据聚合效果?

场景介绍 本章节将向您介绍如何根据地图数据实现聚合效果。 您可以通过比例尺缩放自适应聚合效果,聚合图标可点击。聚合支持功能: 支持按距离聚合ClusterItem。支持绘制聚合Overlay的默认图标。支持绘制聚合Overlay的自定义图标。支持监听聚合Overlay的点击事件。支持添加单…

华为为什么要做三折叠屏手机?

前些天我做了一条视频&#xff0c;关于讲华W的新的三折叠屏手机。我说我有点失望&#xff0c;结果引起了华W的同事的一些关注。于是&#xff0c;华W几位高管都跑过来&#xff0c;跟我解释为什么会出现这样的一个状态。 我才知道&#xff0c;这款手机他们其实是亏着钱在卖的。因…

云盘视频保护神器,支持云盘视频加密与在线播放,配合alist使用,超完美!

平时我们保护视频&#xff0c;一般都是采用压缩工具&#xff0c;进行加密打包&#xff0c;然后在上传到网盘存储。这虽然能起到很好的保护&#xff0c;但是有很多问题&#xff1f;比如&#xff1a;无法直接在线播放&#xff0c;还得从网盘中下载后解压&#xff0c;才能进行观看…

【shell脚本1】Shell脚本学习--入门

目录 简介 Hello World 注释 打印输出 简介 Shell是一种脚本语言&#xff0c;那么&#xff0c;就必须有解释器来执行这些脚本。 Unix/Linux上常见的Shell脚本解释器有bash、sh、csh、ksh等&#xff0c;习惯上把它们称作一种Shell。我们常说有多少种Shell&#xff0c;其实说的…

ProtoBuf序列化框架介绍

文章目录 ProtoBuf介绍使用流程 QUICK START创建.proto文件注释语法编译部分代码展示使用接口运行结果 ProtoBuf介绍 ProtoBuf全称是Protocol Buffer&#xff0c;是一个数据结构的序列化和反序列化框架 他又很多好处&#xff0c;首先是他支持跨平台&#xff0c;支持Java、C、…

进程间通信的七种方法实战演示!值得收藏!

文章目录 前言一、管道&#xff08;Pipes&#xff09;管道示例代码&#xff1a;管道示例流程解读&#xff1a;管道示例运行效果&#xff1a; 二、消息队列&#xff08;Message Queues&#xff09;消息队列示例代码消息队列示例流程解读&#xff1a;消息队列示例执行效果 三、共…

分析redis实现分布式锁的思路

文章目录 1、基于redis实现分布式锁&#xff1a;利用key的唯一性1.1、独占排他1.2、死锁问题1.2.1、redis客户端程序获取了锁之后&#xff0c;服务器立马宕机&#xff0c;就会导致死锁。1.2.2、不可重入&#xff1a;可重入 1.3、原子性&#xff1a;加锁和过期之间&#xff1a;s…