windows环境下vscode编写c语言连接mysql

devtools/2024/10/22 7:40:15/

创建一个文件夹test02

在文件夹中创建test.c文件

vscode打开test02文件夹

自动生成tasks.json和launch.json文件,需要安装这里通C/C++ Runner插件来自动生成json文件和一些文件夹。

接下来配置mysql

本地已经安装了mysql数据库,此安装过程省略。

有的人不配置两个json也能运行,但是我运行一直报错,所以我配置了两个json!!!!

进入VSCode,配置两个json文件

1)c_cpp_properties.json

打开vscode,按下ctrl+shit+p,如下,选择编辑C/C++配置,会自动创建一个名为c_cpp_properties.json 的文件

需要在 c_cpp_properties.json 文件中设置 includePath

C++

C

{"configurations": [{"name": "windows-gcc-x64","includePath": ["${workspaceFolder}/**","C:\\Program Files\\MySQL\\MySQL Server 5.7\\include"],"compilerPath": "D:/software/mingw32/bin/gcc.exe","cStandard": "${default}","cppStandard": "${default}","intelliSenseMode": "windows-gcc-x64","compilerArgs": [""]}],"version": 4
}

2)tasks.json

tasks.json 用来定义 g++ 的编译指令, -I 和 -L 则指定了编译时 include 头文件和 lib 链接的位置。通常,如果 -I 的内容设置错误,会导致程序中的类或函数无法找到;如果 -L 的内容设置错误,则容易出现运行时的链接错误。

我们找到 MySQL Server 安装路径下所包含的 lib 和 include 目录,将他们包含到这里

C++

C

{"tasks": [{"type": "cppbuild","label": "C/C++: gcc.exe 生成活动文件","command": "D:/software/mingw32/bin/gcc.exe","args": ["-fdiagnostics-color=always","-g","${file}","-o","${fileDirname}\\${fileBasenameNoExtension}.exe","-I","C:\\Program Files\\MySQL\\MySQL Server 5.7\\include","-L","C:\\Program Files\\MySQL\\MySQL Server 5.7\\lib","-llibmysql"],"options": {"cwd": "D:/software/mingw32/bin"},"problemMatcher": ["$gcc"],"group": {"kind": "build","isDefault": true},"detail": "调试器生成的任务。"}],"version": "2.0.0"
}

引入文件

打开MySQL的安装路径,如果是按这篇博客安装的MySQL,安装路径在:C:\Program Files 下 找到MySQL文件夹打开

复制include文件夹到项目test02文件夹中,并改名为mysql

进入MySQL安装目录下的lib

最终test02文件夹内容:

测试代码的编写

mysql C语言 API函数查询网址: https://www.mysqlzh.com/api/1.html   
注意:
这段代码的测试前一定要先在MySQL数据库中创建一个test数据库和user表,表有三个字段。如下

CREATE DATABASE test;
CREATE TABLE user(
id CHAR(10) KEY,
uname CHAR(20) NOT NULL,
score INT
);

对表操作测试代码,代码在vs下运行时需要切换到64位平台上,连接数据库的密码和数据库的名称根据自己的需求来修改。

#define _CRT_SECURE_NO_WARNINGS 1#include <stdio.h>
#include <string.h>
#include <stdlib.h>
/*引入连接Mysql的头文件和lib包*/
#include "mysql/mysql.h"
#pragma comment(lib,"libmysql")/*定义一些数据库连接需要的宏*/
#define HOST "localhost" /*MySql服务器地址*/
#define USERNAME "root" /*用户名*/
#define PASSWORD "root" /*数据库连接密码*/
#define DATABASE "test" /*需要连接的数据库*/// 执行sql语句的函数
void exeSql(char* sql) {MYSQL my_connection; /*数据库连接*/int res;  /*执行sql语句后的返回标志*/MYSQL_RES* res_ptr; /*执行结果*/MYSQL_ROW result_row; /*按行返回查询信息*/MYSQL_FIELD* field;   /*返回表字段*/int row, column; /* 定义行数,列数*/mysql_init(&my_connection);if (mysql_real_connect(&my_connection, HOST, USERNAME, PASSWORD, DATABASE, 0, NULL, CLIENT_FOUND_ROWS)){//printf("数据库连接成功!");/*vs默认编码为 gbk 防止乱码*/mysql_query(&my_connection, "set names gbk");res = mysql_query(&my_connection, sql);if (res) {/*现在就代表执行失败了*/printf("Error: mysql_query !\n");/*不要忘了关闭连接*/mysql_close(&my_connection);}else {/*现在就代表执行成功了*//*mysql_affected_rows会返回执行sql后影响的行数*/printf("%lld 行受到影响!\n", mysql_affected_rows(&my_connection));// 把查询结果装入 res_ptrres_ptr = mysql_store_result(&my_connection);// 存在则输出if (res_ptr) {// 获取行数,列数row = (int)mysql_num_rows(res_ptr);column = (int)mysql_num_fields(res_ptr);//打印字段field = mysql_fetch_fields(res_ptr);for (int i = 0; i < column; i++){printf("%s ", field->name);field++;}printf("\n");// 执行输出结果,从第二行开始循环(第一行是字段名)for (int i = 1; i < row + 1; i++){// 一行数据result_row = mysql_fetch_row(res_ptr);             for (int j = 0; j < column; j++){printf("%s ", result_row[j]);}printf("\n");}}/*不要忘了关闭连接*/mysql_close(&my_connection);}}else{printf("数据库连接失败!");}
}int main()
{exeSql("insert into user values ('02','张三',90);");exeSql("insert into user values ('01','李四',90);");exeSql("select * from user;");return 0;
} 


http://www.ppmy.cn/devtools/127774.html

相关文章

boost搜索引擎

图片今天插入的排版和格式都有问题&#xff0c;明天早上起来马上研究修改&#xff0c;先发一下qwq 为什么使用‘\3’&#xff1f; \3 在ASSCII码表中是不可以显示的字符&#xff0c;我们将title、content、url用\3进行区分&#xff0c;不会污染我们的文档&#xff0c;当然你也…

优阅达携手 Theobald 亮相新加坡科技周,助力企业 SAP 数据集成与应用

针对不同用户需求量身定制解决方案&#xff0c;帮助企业轻松应对从数据提取到分析、从开发到流程管理的 SAP 数据挑战。 上周&#xff0c;2024 新加坡科技周在滨海湾金沙会议展览中心圆满落幕。在为期两天的活动中&#xff0c;七大专题展览同时进行&#xff0c;超过 2,000 家…

拼三角问题

欢迎来到杀马特的主页&#xff1a;羑悻的小杀马特.-CSDN博客 目录 一题目&#xff1a; 二思路&#xff1a; 三解答代码&#xff1a; 一题目&#xff1a; 题目链接&#xff1a; 登录—专业IT笔试面试备考平台_牛客网 二思路&#xff1a; 思路&#xff1a;首先明白能组成三角形…

【数据结构与算法】插入排序、希尔排序

记录自己所学&#xff0c;无详细讲解 1.插入排序 从第二个元素开始&#xff0c; 第二个元素前面的元素看作一个数组&#xff0c;然后从右到左依次比较 如果第二个元素大于前面第一个元素则不变&#xff0c;因为升序&#xff0c;大于他则代表位置不用变动 如果第二个元素小于…

智能汽车制造:海康NVR管理平台/工具EasyNVR多品牌NVR管理工具/设备实现无插件视频监控直播方案

一、背景介绍 近年来&#xff0c;随着网络在我国的普及和深化发展&#xff0c;企业的信息化建设不断深入&#xff0c;各行各业都加快了信息网络平台的建设&#xff0c;大多数单位已经或者正在铺设企业内部的计算机局域网。与此同时&#xff0c;网络也成为先进的新兴应用提供了…

在使用 RabbitMQ 作为消息代理时,多个 Celery 实例(或应用)可以共享同一个 RabbitMQ 实例

在使用 RabbitMQ 作为消息代理时&#xff0c;多个 Celery 实例&#xff08;或应用&#xff09;可以共享同一个 RabbitMQ 实例。这样做可以简化基础设施管理&#xff0c;同时允许不同的 Celery 应用之间进行消息传递和协作。下面是如何配置多个 Celery 实例以使用同一个 RabbitM…

AWS账号与邮箱的关系解析

在当今数字化时代&#xff0c;云计算服务的普及使得越来越多的企业和个人用户开始使用亚马逊网络服务&#xff08;AWS&#xff09;。作为全球领先的云服务平台&#xff0c;AWS为用户提供了丰富的计算、存储和数据库服务。然而&#xff0c;对于许多新用户来说&#xff0c;关于AW…

多线程-读写锁的一些理解

分配在不同的核心上&#xff1a;如果主线程和子线程被操作系统的调度器分配到不同的处理器核心上&#xff0c;它们可以真正地同时运行。这是因为每个核心可以独立执行代码&#xff0c;所以两个线程可以并行执行&#xff0c;而不是交替执行。 分配在同一核心上&#xff1a;如果…