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

server/2024/10/25 7:57:40/

创建一个文件夹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/server/134649.html

相关文章

logdata-anomaly-miner:一款安全日志解析与异常检测工具

关于logdata-anomaly-miner logdata-anomaly-miner是一款安全日志解析与异常检测工具&#xff0c;该工具旨在以有限的资源和尽可能低的权限运行分析&#xff0c;以使其适合生产服务器使用。 为了确保 logdata-anomaly-miner的正常运行&#xff0c;推荐安装了python > 3.6的…

如何构建一个支持GPU的Llamafile容器

用CPU玩那些大型的语言模型确实挺有意思的&#xff0c;但看着电脑一个字一个字地慢慢显示结果&#xff0c;那股兴奋劲儿很快就过去了。让这些语言模型软件在GPU上跑起来可能会有点麻烦&#xff0c;因为这得看你的系统和硬件支不支持。我这篇文章就是想告诉你&#xff0c;怎么在…

【Linux】Linux进程间通信

1.进程间通信 进程之间具有独立性&#xff0c;进程间如果要发生通信&#xff0c;就需要打破这种独立性。进程间通信必定需要一块公共的区域来作为信息的存放点&#xff0c;操作系统需要直接或间接给通信进程双方提供内存空间&#xff0c;例如这块内存空间就是文件系统提供的&a…

【 xiangshan分支预测单元结构及时序介绍】

xiangshan分支预测单元结构及时序介绍 1.1 子预测器接口信号1 in2 out3 流水线控制信号4 update更新请求5 redirect重定向请求 1.2 预测器接口连接1.3 分支预测单元时序介绍1.3.1 一周期无空泡预测 1.3.2 预测结果重定向1.4 相关使能信号 本节主要介绍xiangshan BPU内部是如何整…

Django+Vue全栈开发项目入门(一)

Vue项目搭建过程 1、使用脚手架工具搭建项目 2、准备静态资源 3、调整生成项目结构 使用脚手架工具搭建项目 网络请求库axios Axios是一个基于Promise的HTTP库&#xff0c;适用于浏览器和node.js环境&#xff0c;用于发送网络请求。 特点 跨平台性&#xff1a;Axios既可…

简单工厂(Simple Factory)

简单工厂&#xff08;Simple Factory&#xff09; 在创建一个对象时不向客户暴露内部细节&#xff0c;并提供一个创建对象的通用接口。 说明&#xff1a; 简单工厂把实例化的操作单独放到一个类中&#xff0c;这个类就成为简单工厂类&#xff0c;让简单工厂类来决定应该用哪…

网络爬虫中的几种数据存储方式(中篇)

在上一篇文章中&#xff0c;带大家了解了文本的存储方式和json的存储方式&#xff0c;而这篇文章是要大家掌握其余的数据存储方式。 CSV存储文件存储 CSV&#xff0c;全称为 Comma-Separated Values&#xff0c;中文可以叫作逗号分隔值或字符分隔值&#xff0c;其文件以纯文本…

解决后端给前端的返回数据过大的问题(压缩)

解决后端给前端的返回数据过大的问题&#xff08;压缩&#xff09; 问题 后端返回数据过大导致的前端接收数据慢的问题 方案 注解方式压缩后端给前端的返回数据&#xff0c;注解Gzip压缩后端返回数据&#xff08;前端不用做任何处理&#xff09; import com.fasterxml.jack…