VS与SQL Sever(C语言操作数据库)
作者这里使用的是程序是:
Visual Studio SQL Sever
(1 对VS的操作
1.首先我们打开Visual Studio Installer,并以管理员身份运行
2.点击修改
3.先选择数据存储和处理,再在右方添加处理工具(如图设置)
最后在右下角选择修改(作者这里已经下载好了,所以右下角是关闭)
等待下载并安装完成
4.检查工作(可选)
创建新的空项目并在第一行写入#include<sql.h>
光标选择第一行,右键,选择转到文档
如上图则以上操作成功。
(2 对SQL Sever的操作
这里我们直接使用SQL Sever Management操作,不使用Poweshell操作(有图形化窗口管那么多干嘛,直接用!)
正常情况下SQL Sever的最高权限登录名是sa(这是安装时默认的),如果在安装时更改了,请使用更改的登录名,如果出现了不正常的情况,例如:密码忘了、更改的最高权限登录名忘了等等,作者的建议是,在排除没有比较重要的数据的情况下,卸了,重新安装。当然也可以使用Windows身份验证,这个作为附加等下说明。
1.登录
因为是初学,或者刚开始做C语言项目实践要求这类的项目(一般都是大学学计算机的朋友,你们的痛,我懂。)所以一般数据库只在本地进行操作,所以数据库名称选择设备名称(不知道设备名称的朋友请看下一张图)
身份验证使用SQL Sever 身份验证
登录名输入最高权限登录名,我的默认sa
密码,可选记住密码(比如我,因为是真没什么重要数据,属于是给狗看都摇头的地步)
最后连接
服务器名称:WIN+i打开设置
系统>系统信息>设备名称
2.搜索以管理员身份运行ODBC数据源
3. 选择添加
4.双击打开SQL Sever
5.名称随便,描述可以不写,服务器千万别点向下的那个箭头,复制前面的设备名称
弄完后:
不要回车!不要回车!不要回车!直接点下一页
6.选择使用用户输入登录ID和密码的 SQL Sever 验证
方框打勾
登录ID输入你们的最高权限登录名(就是默认是sa的那个,这里的root只是我创建的第二个较高权限账户而已)
密码
7.直接下一页
8.划出来的看需要,我暂时不用,没有需要的话直接点完成
9.点击测试数据源
10.测试成功是这样(我的之前测试过,所以这次很快,如果失败了,就多试几次,可能会出现这样的情况。如果一直失败,就需要搜一下解决方法了,作者没有失败过,所以不知道怎么解决)
11.点击确认
检查是否多出来这样一行(1是作者输入的名称)
(3 完成建立数据库和表的操作
这里就不过多做介绍了,网上一搜一大堆,这里作者使用一下以前建立的数据库和表。
create database 2024春
goues 2024春
gocreate table test(
学号 varchar(20) not null primary key,
姓名 char(20) not null,
楼栋号 tinyint not null,
寝室号 smallint not null,
是否回寝 tinyint
)
go
然后我们随便插入一点数据进去
insert into test values
('2001','张三',10,112,0),
('2003','李四',10,112,1),
('2024','王五',10,112,1)
go
(4 C语言操作数据库
上面那也不是数据库操作呀,别急。先建立一份新的cpp文件:
我们需要修改VS字符集:
项目>属性
配置属性>高级>字符集合
默认的是Unicode,将它修改成使用多字节字符集,不要忘记点应用
修改好后,代码如下,解释我放在注释中:
请一定!一定!一定!看完代码及注释,单纯将代码复制过去肯定报错,需要更改的地方我已在代码中注释说明。
#include<stdio.h>
#include<windows.h>
#include<sql.h>
#include<sqlext.h>
#include<sqltypes.h>void query_all()
{SQLRETURN ret;SQLHENV henv;SQLHDBC hdbc;SQLHSTMT hstmt;ret = SQLAllocHandle(SQL_HANDLE_ENV, NULL, &henv); //申请环境ret = SQLSetEnvAttr(henv, SQL_ATTR_ODBC_VERSION, (SQLPOINTER)SQL_OV_ODBC3, SQL_IS_INTEGER);ret = SQLAllocHandle(SQL_HANDLE_DBC, henv, &hdbc);//申请连接数据库ret = SQLConnect(hdbc, (SQLCHAR*)"数据", SQL_NTS, (SQLCHAR*)"root", SQL_NTS, (SQLCHAR*)"******", SQL_NTS);
/*这里就是ODBC配置"数据"是我起的名字,之前"1"那个不好听,我换了个名字
"root"就是配置ODBC时所用的登录名,"******"是密码,请根据自己的情况*/if (!(ret == SQL_SUCCESS || ret == SQL_SUCCESS_WITH_INFO)){printf("error:连接失败!\n");}ret = SQLAllocHandle(SQL_HANDLE_STMT, hdbc, &hstmt);SQLCHAR sql1[] = "use [2024春]"; //SQL语句选择数据库,我的数据库名字是[2024春]SQLCHAR sql2[] = "select * from test"; //SQL语句执行最简单的查询,test是表名ret = SQLExecDirect(hstmt, sql1, SQL_NTS);ret = SQLExecDirect(hstmt, sql2, SQL_NTS);
/*C语言操作数据库其实就是用C语言的函数,在其中嵌套SQL语句*/if (!(ret == SQL_SUCCESS || ret == SQL_SUCCESS_WITH_INFO))printf("error:调用错误\n");if (ret == SQL_SUCCESS || ret == SQL_SUCCESS_WITH_INFO){printf("学号\t\t姓名\t楼栋号\t寝室号\t是否回寝\n");SQLCHAR str1[50], str2[50], str3[50], str4[50], str5[50], str6[50];SQLLEN len_str1, len_str2, len_str3, len_str4, len_str5, len_str6;while (SQLFetch(hstmt) != SQL_NO_DATA){SQLGetData(hstmt, 1, SQL_C_CHAR, str1, 50, &len_str1); //获取第一列数据SQLGetData(hstmt, 2, SQL_C_CHAR, str2, 50, &len_str2);SQLGetData(hstmt, 3, SQL_C_CHAR, str3, 50, &len_str3);SQLGetData(hstmt, 4, SQL_C_CHAR, str4, 50, &len_str4);SQLGetData(hstmt, 5, SQL_C_CHAR, str5, 50, &len_str5);
/*这里总共你建立表用了几列,你就用几次,比如我的表有(学号,姓名,楼栋号,寝室号,是否回寝)
总共5列,所以用了5次*/printf("%s\t%s\t%s\t%s\t%s\n", str1, str2, str3, str4, str5);}}SQLFreeHandle(SQL_HANDLE_DBC, hdbc);//释放连接SQLFreeHandle(SQL_HANDLE_ENV, henv);//释放环境
}int main()
{query_all();
}
我们之前插入的就显示出来了!你也可以自己再学习一些SQL语句,直接将上面代码中的SQL语句做替换,也就可以实现其他功能。
SQL语句可以先搜搜其他博主的文章,后续我也会写一篇关于SQL语句。
相关文章:
VS与SQL Sever(C语言操作数据库)
作者这里使用的是程序是: Visual Studio SQL Sever (1 对VS的操作 1.首先我们打开Visual Studio Installer,并以管理员身份运行 2.点击修改 3.先选择数据存储和处理,再在右方添加处理工具&#…...
一次奇妙的getshell之旅
1. 资产收集时发现一个网站: https://xxxxxxxxxx/ischool/publish_page/0/ 发现存在管理员登陆: 这里之前在该旁站找到一个SQL注入,然后找到的这个账户密码(这里如何从SQL注入找到账户密码前借鉴前面的报告。): 账号&…...
C# 集合(Collection)
文章目录 前言一、动态数组(ArrayList)二、哈希表(Hashtable)三、排序列表(SortedList)四、堆栈(Stack)五、队列(Queue)六、点阵列(BitArray&…...
深度学习模型:门控循环单元(GRU)详解
本文深入探讨了门控循环单元(GRU),它是一种简化版的长短期记忆网络(LSTM),在处理序列数据方面表现出色。文章详细介绍了 GRU 的基本原理、与 LSTM 的对比、在不同领域的应用以及相关的代码实现,…...
深入浅出:开发者如何快速上手Web3生态系统
Web3作为互联网的未来发展方向,正在逐步改变传统互联网架构,推动去中心化技术的发展。对于开发者而言,Web3代表着一个充满机遇与挑战的新领域,学习和掌握Web3的基本技术和工具,将为未来的项目开发提供强大的支持。那么…...
HCIA笔记6--路由基础与静态路由:浮动路由、缺省路由、迭代查找
文章目录 0. 概念1.路由器工作原理2. 跨网访问流程3. 静态路由配置4. 静态路由的应用场景4.1 路由备份4.2 浮动路由4.3 缺省路由 5. 迭代路由6 问题6.1 为什么路由表中有的下一跳的地址有接口?6.2 个人电脑的网关本质是什么? 0. 概念 自治系统ÿ…...
【北京迅为】iTOP-4412全能版使用手册-第三十二章 网络通信-TCP套字节
iTOP-4412全能版采用四核Cortex-A9,主频为1.4GHz-1.6GHz,配备S5M8767 电源管理,集成USB HUB,选用高品质板对板连接器稳定可靠,大厂生产,做工精良。接口一应俱全,开发更简单,搭载全网通4G、支持WIFI、蓝牙、…...
图片预处理技术介绍4——降噪
图片预处理 大家好,我是阿赵。 这一篇将两种基础的降噪算法。 之前介绍过均值模糊和高斯模糊。如果从降噪的角度来说,模糊算法也算是降噪的一类,所以之前介绍的两种模糊可以称呼为均值降噪和高斯降噪。不过模糊算法对原来的图像特征的…...
Java基础面试题12:Java中的两种异常类型是什么?它们有什么区别?
在 Java 中,异常是非常重要的一部分。理解异常的种类和它们的区别,是每个 Java 开发者都需要掌握的基础技能。 Java 中的异常分类 Java 中异常的根本来源是 Throwable 类,它包含了两大类:错误(Error)和异常…...
MySQL5.6升级MySQL5.7
升级方式介绍 08 数据库服务版本升级方法 5.6 – 5.7 – 8.0 数据库版本升级方法: Inplace-本地升级 步骤一:在同一台服务器中,需要部署高版本数据库服务实例步骤二:低版本数据库中的数据进行备份迁移,迁移到高版本…...
Pytorch实现心跳信号分类识别(支持LSTM,GRU,TCN模型)
Pytorch实现心跳信号分类识别(支持LSTM,GRU,TCN模型) 目录 Pytorch实现心跳信号分类识别(支持LSTM,GRU,TCN模型) 1. 项目说明 2. 数据说明 (1)心跳信号分类预测数据集 3. 模型训练 (1)项目安装 &…...
走进科学json版:在 JSON 格式中,字符串值必须使用双引号 “ 来界定,而不能使用单引号 ‘
走进科学疑难问题出现 在调试fastapi程序的时候,报错碰到422错误 INFO: 192.168.0.99:46536 - "POST /v1/chat/completions/ HTTP/1.1" 422 Unprocessable Entity 干净利索,只有这一句报错,不管代码里加入多少print语句查看…...
【C#】书籍信息的添加、修改、查询、删除
文章目录 一、简介二、程序功能2.1 Book类属性:方法: 2.2 Program 类 三、方法:四、用户界面流程:五、程序代码六、运行效果 一、简介 简单的C#控制台应用程序,用于管理书籍信息。这个程序将允许用户添加、编辑、查看…...
博泽Brose EDI项目案例
Brose 是一家德国的全球性汽车零部件供应商,主要为全球汽车制造商提供机电一体化系统和组件,涵盖车门、座椅调节系统、空调系统以及电动驱动装置等。Brose 以其高质量的创新产品闻名,在全球拥有多个研发和生产基地,是全球第五大家…...
Macos用brew安装Nodejs亲手教程
首先确保brew已安装,搜索node资源,命令如下: brew search nodejs 演示结果如下: 安装nodejs brew install node22 或 brew install node 出现如下界面 表示正在安装,安装成功后,提示如下信息࿱…...
开发一套ERP 第十弹 图片作为配置文件,本地读取图片,定时更新图片类型
echo Hello World在同一数据库中在建一个图床数据表,产品一,一对应,图片命名 最优的方案,使用 rust 在构建一个 http server 用于管理非数据库资源,也可以将来对接不同的图床,部署方便 考虑到数据库资源和图片资源,都可以被远程访问这种方法最佳...
终端环境下关闭显示器
终端环境下关闭显示器 使用vbetool vbetool 使用 lrmi 来运行视频 BIOS 中的代码。目前,它能够更改 DPMS 状态、保存/恢复视频卡状态并尝试从头开始初始化视频卡。 vbetool dpms off...
基于PySpark 使用线性回归、随机森林以及模型融合实现天气预测
基于PySpark 实现天气预测与模型集成 在大数据分析与机器学习领域,Spark 提供了强大的计算能力和灵活的扩展性。本文将介绍如何利用 PySpark 完成以下任务: 1、数据预处理:清洗和编码天气数据。 2、特征工程:合并数值和分类特征…...
Android Studio 右侧工具栏 Gradle 不显示 Task 列表
问题: android studio 4.2.1版本更新以后AS右侧工具栏Gradle Task列表不显示,这里需要手动去设置 解决办法: android studio 2024.2.1 Patch 2版本以前的版本设置:依次打开 File -> Settings -> Experimental 选项&#x…...
Linux详解:文件权限
文章目录 前言Linux文件权限基础文件成员与三组权限字符 权限的修改修改文件所有者总结 前言 在浩瀚的操作系统世界中,Linux以其开源、灵活和强大的特性,成为了服务器、开发环境以及众多个人用户的首选。而在Linux的众多特性中,文件权限机制…...
Linux条件变量线程池详解
一、条件变量 【互斥量】解决了线程间同步的问题,避免了多线程对同一块临界资源访问产生的冲突,但同一时刻对临界资源的访问,不论是生产者还是消费者,都需要竞争互斥锁,由此也带来了竞争的问题。即生产者和消费者、消费…...
CLIP模型也能处理点云信息
✨✨ 欢迎大家来访Srlua的博文(づ ̄3 ̄)づ╭❤~✨✨ 🌟🌟 欢迎各位亲爱的读者,感谢你们抽出宝贵的时间来阅读我的文章。 我是Srlua小谢,在这里我会分享我的知识和经验。&am…...
编译MT7620 OpenWrt的所有机型的固件
前置条件:准备VMware16Ubuntu16.04的编译环境 安装编译需要的插件 sudo apt-get install gcc g binutils patch bzip2 flex bison make autoconf gettext texinfo unzip sharutils libncurses5-dev ncurses-term zlib1g-dev gawk asciidoc libz-dev git-core uuid…...
C_字符串的一些函数
1.字符串输入函数 scanf("%s",数组名); gets(数组名); 区别: scanf(“%s”,数组名); 把空格识别为输入结束 #include <stdio.h>int main() {char a[10];printf("输入:");scanf("%s",a)…...
pytest自定义命令行参数
实际使用场景:pytest运行用例的时候,启动mitmdump进程试试抓包,pytest命令行启动的时候,传入mitmdump需要的参数(1)抓包生成的文件地址 (2)mitm的proxy设置 # 在pytest的固定文件中…...
【OpenAI库】从0到1深入理解Python调用OpenAI库的完整教程:从入门到实际运用
文章目录 Moss前沿AI一、初识OpenAI API1.1 获取API-Key(两种方案)1.2 安装OpenAI库 二、Python调用OpenAI API的基础设置2.1 设置API密钥和Base URL2.2 参数详解 三、构建一个简单的聊天应用3.1 创建聊天请求3.2 参数详解3.3 处理响应 四、完整代码示例…...
设计模式---建造者模式
建造者模式 一种创建型设计模式,它允许你一步一步地构建复杂对象。通过使用建造者模式,你可以将对象的构建过程与其表示分离,使得同样的构建过程可以创建不同的表示。说白点就是,解决了构造函数创建对象的问题。 适用于那种构造函…...
安装MySQL 5.7 亲测有效
前言:本文是笔者在安装MySQL5.7时根据另一位博主大大的安装教程基础上做了一些修改而成 首先在这里表示对博主大大的感谢 下面附博主大大地址 下面的步骤言简意赅 跟着做就不会出错 希望各位读者耐下心来 慢慢解决安装中出现的问题~MySQL 5.7 安装教程(全…...
delphi 12 idhttpsever(S)+idhttp(C) 实现简单的JSON API服务
这篇博客展示了如何使用Delphi创建一个简单的HTTP服务器,并处理GET和POST请求。服务器监听6600端口,响应JSON格式的数据。客户端通过IdHttp组件进行GET和POST请求,获取并显示服务器响应的内容。 http服务器测试代码 procedure TForm1.FormSh…...
SVM支持向量机分类——基于Python实现
SVM支持向量机分类 1.描述统计 from numpy import * from scipy import * from pandas import * import matplotlib.pyplot as pltimport seaborn as sns glassread_csv(../data/第5章数据/Glass.csv,sep,) glass.head() glass[Type].value_counts()Type 2 76 1 70 7 …...
k8s使用的nfs作为sc。
k8s使用的nfs作为sc。 当前出现一个问题: 1.有一个pod他是通过流进行文件解压并写入到nfs服务器对应的目录中。 2.一个大压缩包下有20多个压缩包,递归解压。解压完成后应该是20多个文件夹,文件夹下有.json文件。 3.pod中的程序解压后去找以.j…...
tp6 合成两个pdf文件(附加pdf或者替换pdf)
最近在做项目有个需求,项目中需要根据设置的html合同模板自动生成PDF合同供客户下载签署,并根据回传的已签署合同尾页来替换原来未签署合同的尾页,合成新的已签署合同文本。 读取两个PDF文件并合成的 具体代码记录如下: use set…...
SpringBoot
SpringBoot简介 SpringBoot是由Pivotal团队提供的全新框架,其设计目的是用来简化Spring应用的初始搭建以及开发过程 SpringBoot快速入门 新建maven工程,导入SpringBoot父工程以及依赖 <?xml version"1.0" encoding"UTF-8"?>…...
2024第六届金盾信安杯Web 详细题解
比赛一共4道Web题,比赛时只做出三道,那道文件上传没有做出来,所以这里是另外三道题的WP 分别是 fillllll_put hoverfly ssrf fillllll_put 涉及: 绕过exit() 死亡函数 php://filter 伪协议配合base64加解密 一句话木马 题目源码: $content参数在开头被…...
The selected directory is not a valid home for Go SDK
在idea里配置go语言的环境时,选择go语言的安装目录,一直提示这个 The selected directory is not a valid home for Go SDK后来查了一下,发现原来idea识别不出来 需要改一下配置文件,找到go环境的安装目录,我是默认安…...
《智能体雏形开发(高阶实操)》开发计划概述
智能体雏形开发计划 通过本计划,逐步完成一个可以真实运行的智能体雏形。 最终完成一个**“用户日志文件生成日报,日报再进一步汇总成周报”**的任务驱动型智能体雏形 第一阶段:基础准备与环境搭建 1. 学习基础知识 了解智能体的概念、类型和技术框架。学习大模型(如阿里…...
【查询基础】.NET开源 ORM 框架 SqlSugar 系列
💥 .NET开源 ORM 框架 SqlSugar 系列 🎉🎉🎉 【开篇】.NET开源 ORM 框架 SqlSugar 系列【入门必看】.NET开源 ORM 框架 SqlSugar 系列【实体配置】.NET开源 ORM 框架 SqlSugar 系列【Db First】.NET开源 ORM 框架 SqlSugar 系列…...
【Linux】设计文件系统(C实现)
要求: (1)可以实现下列几条命令 dir 列文件目录 create 创建文件 delete 删除文件 read 读文件 write 写文件 (2)列目录时要列出文件名、存取权限(八进制)、文件长度、时间(创建时间,修改时间以及…...
Redis+Caffeine 多级缓存数据一致性解决方案
RedisCaffeine 多级缓存数据一致性解决方案 背景 之前写过一篇文章RedisCaffeine 实现两级缓存实战,文章提到了两级缓存RedisCaffeine可以解决缓存雪等问题也可以提高接口的性能,但是可能会出现缓存一致性问题。如果数据频繁的变更,可能会导…...
SpringMVC(二)
Model 以Map方式进行存储,用于向作用域中存值。 注意:在Model中增加模型数据,若不指定key,则默认使用对象的类型作为key Controller //控制器类 public class IndexController {RequestMapping("/index3")public Strin…...
leetcode--螺旋矩阵
LCR 146.螺旋遍历二维数组 给定一个二维数组 array,请返回「螺旋遍历」该数组的结果。 螺旋遍历:从左上角开始,按照 向右、向下、向左、向上 的顺序 依次 提取元素,然后再进入内部一层重复相同的步骤,直到提取完所有元…...
动手学深度学习10.5. 多头注意力-笔记练习(PyTorch)
本节课程地址:多头注意力代码_哔哩哔哩_bilibili 本节教材地址:10.5. 多头注意力 — 动手学深度学习 2.0.0 documentation 本节开源代码:...>d2l-zh>pytorch>chapter_multilayer-perceptrons>multihead-attention.ipynb 多头注…...
Selenium3+Python如何操作键盘
selenium操作键盘,需要导入Keys类:“from selenium.webdriver.common.keys import Keys” 调用键盘操作的快捷键的方法 : 单键值:直接传入对应的键值“element.send_keys”(快捷键的键值) 组合键:键值之间由逗号分隔…...
数据仓库的概念
先用大白话讲一下,数据仓库的主要目的就是存储和分析大量结构化数据的。 > 那么它的核心目的是:支持商业智能(BI)和决策支持系统,也就是说,它不仅仅是为了存储,更重要的是为了分析提供便利。…...
初级数据结构——二叉搜索树
目录 前言一、定义二、基本操作三、时间复杂度分析四、变体五、动态图解六、代码模版七、经典例题[1.——700. 二叉搜索树中的搜索](https://leetcode.cn/problems/search-in-a-binary-search-tree/)代码题解 [2.——938. 二叉搜索树的范围和](https://leetcode.cn/problems/ra…...
配置宝塔php curl 支持http/2 发送苹果apns消息推送
由于宝塔面板默认的php编译的curl未加入http2的支持,如果服务需要使用apns推送等需要http2.0的访问就会失败,所以重新编译php让其支持http2.0 编译方法: 一、安装nghttp2 git clone https://github.com/tatsuhiro-t/nghttp2.git cd nghttp…...
ARP表、MAC表、路由表的区别和各自作用
文章目录 ARP表、MAC表、路由表的区别和各自作用同一网络内:ARP表request - 请求reply - 响应 MAC地址在同一网络内,交换机如何工作? 不同网络路由表不同网络通信流程PC1到路由器路由器到PC2流程图 简短总结 ARP表、MAC表、路由表的区别和各自作用 拓扑图如下: 同一网络内:…...
限定符使用
正则表达式的元字符一次一般只能匹配一个位置或一个字符,如果想要匹配零个、一个或多个字符时,则需要使用限定符。限定符用于指定允许特定字符或字符集自身重复出现的次数。常用限定符如下: <asp:TextBox [^>]> 正则表达式字符类[^>]匹配除过“>”之外的任何字…...
【k8s】创建基于sa的token的kubeconfig
需求 创建一个基于sa的token的kubeconfig文件,并用这个文件来访问集群。 具体创建sa 和sa的token请参考文章: 【k8s】给ServiceAccount 创建关联的 Secrets-CSDN博客 创建sa apiVersion: rbac.authorization.k8s.io/v1 kind: Role metadata:namespace: jtkjdevnam…...
计算机网络——不同版本的 HTTP 协议
介绍 HTTP,即超文本传输协议(HyperText Transfer Protocol),是应用层的一个简单的请求-响应协议,它指定了客户端可能发送给服务器什么样的消息以及得到什么样的响应。本文将介绍 HTTP 协议各个版本。 HTTP/1.0 HTTP/1…...