VS与SQL Sever(C语言操作数据库)

news2024/12/11 22:44:44

作者这里使用的是程序是:

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春
go

ues 2024春
go

create 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语句。 

 

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

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

相关文章

基于“开源 2+1 链动 O2O 商城小程序”的门店拉新策略与流程设计

摘要&#xff1a;在数字化商业浪潮席卷之下&#xff0c;实体门店面临着激烈的市场竞争&#xff0c;如何高效拉新成为关乎门店生存与发展的关键问题。本文聚焦于“开源 21 链动 O2O 商城小程序”&#xff0c;深入探讨结合多种手段的门店拉新策略及详细流程设计。通过剖析到店扫码…

微服务即时通讯系统(5)用户管理子服务,网关子服务

用户管理子服务&#xff08;user文件&#xff09; 用户管理子服务也是这个项目中的一个业务最多的子服务&#xff0c;接口多&#xff0c;但是主要涉及的数据表只有user表&#xff0c;Redis的键值对和ES的一个搜索引擎&#xff0c;主要功能是对用户的个人信息进行修改管理&#…

ceph的存储池管理

1 查看存储池信息 查看存储池的名称 [rootceph141ceph]# ceph osd pool ls .mgr查看存储池机器编号 [rootceph141ceph]# ceph osd pool ls 1 .mgr查看存储池的详细信息 [rootceph141ceph]# ceph osd pool ls detail pool 1 .mgr replicated size 3 min_size 2 crush_rule 0 ob…

Spring和SpringBoot的关系和区别?

大家好&#xff0c;我是锋哥。今天分享关于【Spring和SpringBoot的关系和区别&#xff1f;】面试题。希望对大家有帮助&#xff1b; Spring和SpringBoot的关系和区别&#xff1f; 1000道 互联网大厂Java工程师 精选面试题-Java资源分享网 Spring和Spring Boot是两种相关但有所…

21个Python脚本自动执行日常任务(1)

引言 作为编程领域摸爬滚打超过十年的老手&#xff0c;我深刻体会到&#xff0c;自动化那些重复性工作能大大节省我们的时间和精力。 Python以其简洁的语法和功能强大的库支持&#xff0c;成为了编写自动化脚本的首选语言。无论你是专业的程序员&#xff0c;还是希望简化日常工…

蘑菇书(EasyRL)学习笔记(3)

q1、学习与规划 学习&#xff08;learning&#xff09;和规划&#xff08;planning&#xff09;是序列决策的两个基本问题。如下图所示&#xff0c;在强化学习中&#xff0c;环境初始时是未知的&#xff0c;智能体不知道环境如何工作&#xff0c;它通过不断地与环境交互&#x…

46 基于单片机的烧水壶系统设计

目录 一、主要功能 二、硬件资源 三、程序编程 四、实现现象 一、主要功能 基于STC89C52RC单片机&#xff0c;采用四个按键&#xff0c;通过DS18B20检测温度&#xff0c;开机显示实时温度 第一个按键为切换功能按键&#xff0c;按下后&#xff0c;可以设置烧水温度的大小&…

谈论 PHP与XSS

本文将讨论一些脚本攻击问题&#xff0c;以及如何解决XSS脚本攻击问题 美好的周末就用来学点知识吧&#xff01;&#xff01;&#xff01; ———————————————————————————————————— 文章目录 XSS跨站脚本攻击XSS是什么XSS类型&#xff1a;反…

用micropython 操作stm32f4单片机的定时器实现蜂鸣器驱动

import pyb import time # 初始化引脚和定时器通道作为PWM输出 # 注意&#xff1a;这里我们假设您使用的是支持PWM的引脚和定时器 # 在不同的MicroPython板上&#xff0c;支持的引脚和定时器可能不同 # 请查阅您的板的文档以确认正确的引脚和定时器 buzzer_pin pyb.Pin(PD15,…

Ubuntu20.04双系统安装详解(内容详细,一文通关!)

Ubuntu20.04作为现今ubuntu非常稳定的一个版本&#xff0c;是大家入门ubnutu的非常奈斯的版本选择。接下来介绍一下在windows上配置ubuntu双系统的方式&#xff0c;该篇博文主要参考b站用户“机器人工匠阿杰”的双系统安装教学视频&#xff0c;传送门如下&#xff1a; &#x…

100V降压恒流芯片SL2516D 内置MOS管 支持15W功率输出 电动车照明

一、SL2516D芯片概述 SL2516D是一款新一代车灯照明专用降压恒流IC&#xff0c;支持高达100V的输入电压范围&#xff0c;并内置了100V功率MOS。它采用ESOP8封装&#xff0c;具有外围电路简单、高效能、高精度和稳定的恒流输出特性。 二、内置MOS管 SL2516D芯片内置了100V功率…

Microi吾码|.NET、VUE快速搭建项目,低代码便捷开发教程

Microi吾码&#xff5c;VUE快速搭建项目&#xff0c;低代码便捷开发教程 一、摘要二、Microi吾码介绍2.1 功能介绍2.2 团队介绍2.3 上线项目案例 三、VUE中使用Microi吾码3.1 前期了解3.2 创建第一个低代码应用3.3 接口API使用说明3.4 引擎界面可视化配置&#xff0c;生成API3.…

线程信号量 Linux环境 C语言实现

既可以解决多个同类共享资源的互斥问题&#xff0c;也可以解决简易的同步问题 头文件&#xff1a;#include <semaphore.h> 类型&#xff1a;sem_t 初始化&#xff1a;int sem_init(sem_t *sem, int pshared, unsigned int value); //程序中第一次对指定信号量调用p、v操…

解决 Maven 部署中的 Artifact 覆盖问题:实战经验分享20241204

&#x1f6e0;️ 解决 Maven 部署中的 Artifact 覆盖问题&#xff1a;实战经验分享 &#x1f4cc; 引言 在软件开发过程中&#xff0c;持续集成和持续部署&#xff08;CI/CD&#xff09;是提高开发效率和代码质量的关键手段。Hudson 和 Maven 是两种广泛使用的工具&#xff0…

【Linux】文件描述符fd

1.前置预备 文件 内容 属性访问文件之前&#xff0c;都必须先打开他 #include<stdio.h> int main() { FILE* fpfopen("log.txt","w"); if(fpNULL) { perror("fopen"); return 1; } fclose(fp); return 0…

JVM 性能调优 -- JVM 调优常用网站

前言&#xff1a; 上一篇分享了 JDK 自带的常用的 JVM 调优命令和图形化界面工具&#xff0c;本篇我们分享一下常用的第三方辅助 JVM 调优网站。 JVM 系列文章传送门 初识 JVM&#xff08;Java 虚拟机&#xff09; 深入理解 JVM&#xff08;Java 虚拟机&#xff09; 一文搞…

数据结构自测5

第6章 树和二叉树 自测卷解答 一、下面是有关二叉树的叙述&#xff0c;请判断正误&#xff08;每小题1分&#xff0c;共10分&#xff09; &#xff08; √ &#xff09;1. 若二叉树用二叉链表作存贮结构&#xff0c;则在n个结点的二叉树链表中只有n—1个非空指针域。 &#xff…

优傲协作机器人 Remote TCP Toolpath URCap(操作记录)

目录 一、新机设置项 1、设置管理员密码 2、设置安全密码 3、设置负载 二、激活 Remote TCP & Toolpath URCap 1、插入U盘 2、打开激活面板 3、导入许可证 4、查看是否激活成功 5、启用功能 三、使用流程&#xff08;官方&#xff09; 步骤一 步骤二 步骤三 …

【数据库系列】Spring Boot如何配置Flyway的回调函数

Flyway 提供了回调机制&#xff0c;使您能够在特定的数据库迁移事件发生时执行自定义逻辑。通过实现 Flyway 的回调接口&#xff0c;可以在迁移前后执行操作&#xff0c;如记录日志、执行额外的 SQL 语句等。 1. 创建自定义回调类 要配置 Flyway 的回调函数&#xff0c;需要创…

正点原子imx6ull配置MQTT客户端上传数据到Ubuntu MQTT服务器

目录 使用QT自带的MQTT模块部署客户端创建一个class专门用于MQTT客户端通讯使用QT在ui界面上生成按钮在Windows上订阅相应主题测试在imx6ull上订阅Windows发布的消息 在上一篇中介绍了在Ubuntu22.04的Docker中部署MQTT服务器&#xff0c;然后在window上测试订阅和发布&#xff…