visual studio连接sql server数据库

目录
    • 1、为什么要建立连接
    • 2、在sql server中建立数据库
    • 3、visual studio连接sql server数据库
    • 4、学生信息管理系统页面布局
    • 5、添加事件逻辑
      • 5.1 页面跳转
      • 5.2 读取学生信息
      • 5.3 查询学生信息
      • 5.4 修改学生信息
      • 5.5 删除学生信息
      • 5.6 添加学生信息

bilibili演示视频
github源码


1、为什么要建立连接

sql server是关系数据库管理系统,专门用来查询、操作和管理数据库。visual studio和sql server连接后,可以读取数据库中的数据,还能对数据进行增删改查。比如,我们在visual studio中用C#语言开发一个学生信息管理软件,具体功能有读取学生信息、更改学生信息、删除学生信息、添加学生信息等,这些学生的信息就存储在sql server中,软件可以根据用户的操作读取和更改数据库中的信息。

2、在sql server中建立数据库

打开SQL Server Management Studio(SSMS)软件,连接到服务器。
选择“数据库”,右键,“新建数据库”,建立一个学生信息数据库,数据库名为StuMes。

在这里插入图片描述
输入数据库名称,点击确定。这样,学生信息数据库就建立好了。

在这里插入图片描述

在数据库中新建一个表,用来存储学生信息,包括姓名、年龄、性别、学号。
点击“表”,右键,“新建”–>“表”。

在这里插入图片描述
输入列名和数据类型。

在这里插入图片描述
在这里插入图片描述

保存,输入表名称Table_Stu,点击确定。

在这里插入图片描述

选择StuMes数据库,右键,刷新,这时就可以看到刚刚新建的表了,目前表中只包含列名,没有实际的内容。当然,列的添加也可以通过代码的方式,我这里是手动添加的。

在这里插入图片描述

向表中添加学生信息。点击“新建查询”,通过代码的方式向表中添加5个学生的信息。

在这里插入图片描述

代码的意思是,向Table_Stu表中插入这5个学生的信息。

在这里插入图片描述

insert into Table_Stu(Name,Age,Sex,StuNum) values('小王','18','男','12345')
insert into Table_Stu(Name,Age,Sex,StuNum) values('小白','20','男','12323')
insert into Table_Stu(Name,Age,Sex,StuNum) values('小黑','19','男','11223')
insert into Table_Stu(Name,Age,Sex,StuNum) values('小赵','18','女','32145')
insert into Table_Stu(Name,Age,Sex,StuNum) values('小兰','21','男','13254')

全选代码,点击执行,这样就将5条学生信息记录到了数据库中的表中了。

在这里插入图片描述

在这里插入图片描述

3、visual studio连接sql server数据库

首先,新建一个C# Windows窗体应用 项目,我这里项目名称为DataConnect,点击确定。

在这里插入图片描述
项目建立好后,点击“工具”–>“连接到数据库”,

在这里插入图片描述
数据源选择“Microsoft SQL Server(SqlClient)”,还需要输入服务器名,以及选择数据库名称。
在这里插入图片描述
在SQL Server Management Studio软件点击“文件”–>“连接对象资源管理器”,复制“服务器名称”,粘贴过来,这时就可以通过下拉框选择刚创建的学生信息数据库了。点击确定。

在这里插入图片描述

在这里插入图片描述
这样就可以在visual studio“服务器资源管理器”中看到连接到的数据库了。

在这里插入图片描述

4、学生信息管理系统页面布局

双击打开Form1.cs文件,该文件对应的是图中所示的窗体,我们向窗体中拖入控件,包括1个DataGridView用于显示数据库表格数据,和5个Button用于触发事件,打开跳转界面。我们为学生信息管理系统设置了5个功能,分别是学生信息读取、学生信息查询、学生信息修改、学生信息删除、学生信息添加,DataGridView用于显示学生信息。具体的控件添加方法见WinForms添加Button控件。

在这里插入图片描述

将第一个Button的Name改为“btnRead”,text改为“读取”;将第二个Button的Name改为“btnFind”,text改为“查询”;将第三个Button的Name改为“btnChange”,text改为“修改”;将第四个Button的Name改为“btnDel”,text改为“删除”;将第五个Button的Name改为“btnAdd”,text改为“添加”。将窗体的Text改为“学生信息管理系统”。就这样,第一个窗体的布局完毕。

在这里插入图片描述

点击项目,右键,新建Windows窗体,新建窗体作为跳转界面,当主界面点击“查询”、“修改”、“删除”、“添加”后,会跳转到相应窗体。

在这里插入图片描述

在这里插入图片描述

5、添加事件逻辑

上面我们完成了页面的绘制,但是仅仅这样并没有什么用,我们运行代码后,点击界面并不会发生任何事情,这是因为我们没有添加逻辑,也就是没有写代码,winform并不知道我们添加的这些控件是用来干什么的,下面,就依次来添加功能代码。

5.1 页面跳转

双击“查询”控件,会跳转到该控件背后的代码。当鼠标点击控件后,btnFind_Click()函数会被执行,我们要实现的效果是点击“查询”后,页面跳转,因此就需要将代码添加到该函数下。

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

同样的,给“修改”、“删除”、“添加”也加上相同的功能。

5.2 读取学生信息

从数据库表格中读取学生信息,DataGridView显示。
点击项目,右键,添加类。默认命名为Class1.cs。

在这里插入图片描述
在这里插入图片描述

using System;
using System.Collections.Generic;
using System.Data;
using System.Data.SqlClient;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;namespace DataConnect
{class Class1{public SqlConnection conn;public SqlConnection Connect()  //连接数据库{//Data Source指定本地数据库,Initial Catalog指定数据库名称//Integrated Security=True 表示使用集成安全性,也就是说,用户//的Windows帐户身份将被用来验证数据库连接,而不是使用账号和密码。string str = @"Data Source=.;Initial Catalog=StuMes;Integrated Security=True"; //数据库连接字符串//string constr = "server=localhost;database=数据库名;uid=账号;pwd=密码;";conn = new SqlConnection(str);  //创建SqlConnection对象conn.Open();  //打开数据库连接return conn;}public SqlCommand Command(string sql) //执行一条sql命令{SqlCommand cmd = new SqlCommand(sql, Connect());return cmd;}public int Execute(string sql) //获取执行sql命令后,数据库表中数据条数的更新数量,用来判断命令是否执行成功{return Command(sql).ExecuteNonQuery();}public SqlDataReader Read(string sql) //读取数据库中的数据{return Command(sql).ExecuteReader();}public void Close() //关闭数据库{conn.Close();}}
}

双击“读取”,进入代码,在函数中输入代码,我们要实现的效果是,点击“读取”后,程序获取数据库数据,返回连接结果,并将获取的数据显示在DataGridView。
在这里插入图片描述

private void btnRead_Click(object sender, EventArgs e){Class1 c1 = new Class1(); //创建类对象c1.Connect(); //连接并打开数据库string sql = "SELECT * FROM Table_Stu"; //选择表中所有数据SqlCommand co = c1.Command(sql);  //执行命令SqlDataAdapter adapt = new SqlDataAdapter();adapt.SelectCommand = co;DataSet ds = new DataSet();adapt.Fill(ds, "t");    //第二个参数:表名,随便取dataGridView1.DataSource = ds.Tables["t"];c1.Close();}

在这里插入图片描述

5.3 查询学生信息

通过学号进行学生信息的查询,如果查询的学生在数据库中,则返回学生的完整信息,否则,给出提示信息。

private void btnOk_Click(object sender, EventArgs e){string num = txtNum.Text;if(num!=""){Class1 c1 = new Class1();c1.Connect();string sql = $"select * from Table_Stu where StuNum={int.Parse(num)}";SqlDataReader reader = c1.Read(sql);bool flag = reader.Read();if (flag==true){MessageBox.Show("查询成功");SqlCommand co = c1.Command(sql);  //执行命令SqlDataAdapter adapt = new SqlDataAdapter();adapt.SelectCommand = co;DataSet ds = new DataSet();adapt.Fill(ds, "t");    //第二个参数:表名,随便取dataGridView1.DataSource = ds.Tables["t"];}else{MessageBox.Show("不存在输入的学号信息");dataGridView1.DataSource = null;return;}c1.Close();}else{MessageBox.Show("请输入学号");}}private void btnExit_Click(object sender, EventArgs e){this.Close();}

在这里插入图片描述
在这里插入图片描述

5.4 修改学生信息

先判断输入的学号是否存在于数据库中,如果不存在,就返回提示信息;否则,就进行修改。

        private void btnExit_Click(object sender, EventArgs e){this.Close();}private void btnOk_Click(object sender, EventArgs e){string name = txtName.Text;string age = txtAge.Text;string sex = comSex.Text;string num = txtNum.Text;if (num != ""){Class1 c1 = new Class1();c1.Connect();string sql = $"select * from Table_Stu where StuNum={int.Parse(num)}";SqlDataReader reader = c1.Read(sql);bool flag = reader.Read();if (flag == true){//MessageBox.Show("查询成功");if (name == "" || age == "" || sex == ""){MessageBox.Show("请将信息填写完整");}else{sql = $"delete from Table_Stu where StuNum={int.Parse(num)}";c1.Execute(sql); //执行命令sql = $"insert into Table_Stu values('{name}','{age}','{sex}','{num}')";c1.Execute(sql);MessageBox.Show("修改信息成功");}}else{MessageBox.Show("不存在输入的学号信息");return;}c1.Close();}else{MessageBox.Show("请输入学号");}}}}
5.5 删除学生信息

输入学号,判断是否存在于数据库中,没有则返回提示信息,有则删除该条信息。

private void btnExit_Click(object sender, EventArgs e){this.Close();}private void btnOk_Click(object sender, EventArgs e){string num = txtNum.Text;if(num!=""){Class1 c1 = new Class1();c1.Connect();string sql = $"select * from Table_Stu where StuNum={int.Parse(num)}";SqlDataReader reader = c1.Read(sql);bool flag = reader.Read();if (flag == true){sql = $"delete from Table_Stu where StuNum={int.Parse(num)}";c1.Execute(sql); //执行命令MessageBox.Show("删除信息成功");}else{MessageBox.Show("不存在输入的学号信息");return;}c1.Close();}else{MessageBox.Show("请输入学号");}}
5.6 添加学生信息

先判断输入的学生学号在数据库中是否存在,如果存在,则返回提示信息,否则就添加信息到数据库,同时,输入的信息需要完整。

private void btnExit_Click(object sender, EventArgs e){this.Close();}private void btnOk_Click(object sender, EventArgs e){string name = txtName.Text;string age = txtAge.Text;string sex = comSex.Text;string num = txtNum.Text;Class1 c1 = new Class1();c1.Connect();string sql = "select * from Table_Stu";SqlDataReader reader = c1.Read(sql);reader.Read();string tmp = reader[3].ToString();if (name == "" || age == "" || sex == "" || num == ""){MessageBox.Show("请输入完整信息");}else{if(tmp==num){MessageBox.Show("您输入的学号已存在,请重新输入");return;}else{sql = $"insert into Table_Stu values('{name}','{age}','{sex}','{num}')";c1.Execute(sql);MessageBox.Show("添加信息成功");}}c1.Close();}

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

HTML——30.视频引入

<head><meta charset"UTF-8"><title>视频引入</title></head><body><!--video:在网页中引入音频IE8以及之前版本不支持属性名和属性值一样&#xff0c;可以只写属性名src属性:指定视频文件路径&#xff0c;必须要有controls属…

基于Pytorch和yolov8n手搓安全帽目标检测的全过程

一.背景 还是之前的主题&#xff0c;使用开源软件为公司搭建安全管理平台&#xff0c;从视觉模型识别安全帽开始。主要参考学习了开源项目 https://github.com/jomarkow/Safety-Helmet-Detection&#xff0c;我是从运行、训练、标注倒过来学习的。由于工作原因&#xff0c;抽空…

如何使用MySQL的group_concat函数快速做关联查询?

当我们需要做一对多的关联查询时&#xff0c;会很容易想到用left join来实现。例如&#xff0c;现有country表和city表之间建立了一对多的关联关系。如果要展示各国家以及城市列表&#xff0c;会很容易想到以下SQL&#xff1a; SELECT country, city FROM country LEFT JOI…

plsql :用户system通过sysdba连接数据库--报错ora-01031

一、winR cmd通过命令窗口登录sys用户 sql sys/[password]//localhost:1521/[service_name] as sysdba二、输入用户名:sys as sysdba 三、输入密码:自己设的 四、执行grant sysdba to system; 再去PL/SQL连接就可以了

循环神经网络(RNN)入门指南:从原理到实践

目录 1. 循环神经网络的基本概念 2. 简单循环网络及其应用 3. 参数学习与优化 4. 基于门控的循环神经网络 4.1 长短期记忆网络&#xff08;LSTM&#xff09; 4.1.1 LSTM的核心组件&#xff1a; 4.2 门控循环单元&#xff08;GRU&#xff09; 5 实际应用中的优化技巧 5…

U盘格式化工具合集:6个免费的U盘格式化工具

在日常使用中&#xff0c;U盘可能会因为文件系统不兼容、数据损坏或使用需求发生改变而需要进行格式化。一个合适的格式化工具不仅可以清理存储空间&#xff0c;还能解决部分存储问题。本文为大家精选了6款免费的U盘格式化工具&#xff0c;并详细介绍它们的功能、使用方法、优缺…

1 数据库(下):多表设计 、多表查询 + SQL中的with查询语法(MySQL8.0以后版本才支持这种新语法)+ 数据库优化(索引优化)

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言一、多表设计1 多表设计-概述2 三种多表关系一对多&#xff08;多对一&#xff09;&#xff08;1&#xff09;无外键约束&#xff08;逻辑外键&#xff09;&…

python读写文件的三种做法

对于文件操作&#xff0c;python提供了3种做法&#xff1a;open(), os.open() 和with open()语句。 1. open()函数&#xff1a;一般用于更高级的文件读写操作&#xff0c;即人能读懂的用法&#xff0c;如果是写入数据&#xff0c;可用传入字符串。 用法&#xff1a;open(path…

RocketMQ(二)RocketMQ实战

文章目录 一、RocketMQ实战1.1 批量消息发送1.2 消息发送队列自选择1.3 事务消息1.4 SpringCloud集成RocketMQ 二、最佳实践2.1 生产者2.1.1 发送消息注意事项2.1.2 消息发送失败处理方式 2.2 消费者2.2.1 消费过程幂等2.2.2 消费打印日志 2.3 Broker 三、相关问题3.1 为什么要…

产品原型设计

&#x1f923;&#x1f923;目录&#x1f923;&#x1f923; 一、Axure原型设计&#xff08;Axure RP 9 &#xff09;1.1 软件下载安装1.2 产品原型展示1.3 产品原型下载1.4 视频课程推荐 二、磨刀原型设计2.1 软件下载安装2.2 产品原型展示2.3 产品原型下载2.4 视频课程推荐 什…

C++ 编译过程全解析:从源码到可执行文件的蜕变之旅

引言 C 作为一种广泛应用于系统开发、游戏编程、嵌入式系统等领域的高级编程语言&#xff0c;其代码需要经过编译才能转换为计算机可执行的机器语言。编译过程涵盖多个复杂阶段&#xff0c;每个阶段对最终生成的可执行文件的性能、稳定性及兼容性都有着深远影响。深入理解 C 编…

【漏洞复现】NetMizer 日志管理系统 hostdelay.php 前台RCE漏洞复现

免责声明 请勿利用文章内的相关技术从事非法测试,由于传播、利用此文所提供的信息而造成的任何直接或者间接的后果及损失,均由使用者本人负责,作者不为此承担任何责任。工具来自网络,安全性自测,如有侵权请联系删除。本次测试仅供学习使用,如若非法他用,与平台和本文作…

hive-sql 连续登录五天的用户

with tmp as (select 梁牧泽 as uid, 2023-03-03 as dt union allselect 梁牧泽 as uid, 2023-03-04 as dt union allselect 梁牧泽 as uid, 2023-03-05 as dt union allselect 梁牧泽 as uid, 2023-03-07 as dt union allselect 梁牧泽 as uid, 2023-03-08 as dt union allsel…

【运维】部署MKDocs

部署MKDocs obsidian 记录笔记&#xff0c;通过 mkdocs 私有化部署。 1 使用MKDocs创建笔记 创建仓库&#xff0c;安装 Material for MkDocs 和 mkdocs-minify-plugin mkdir tmp cd tmp git initpip install mkdocs-material pip install mkdocs-minify-pluginmkdocs new .2 …

Linux的进程替换以及基础IO

进程替换 上一篇草率的讲完了进程地址空间的组成结构和之间的关系&#xff0c;那么我们接下来了解一下程序的替换。 首先&#xff0c;在进程部分我们提过了&#xff0c;其实文件可以在运行时变成进程&#xff0c;而我们使用的Linux软件其实也是一个进程&#xff0c;所以进一步…

C#编写的金鱼趣味小应用 - 开源研究系列文章

今天逛网&#xff0c;在GitHub中文网上发现一个源码&#xff0c;里面有这个金鱼小应用&#xff0c;于是就下载下来&#xff0c;根据自己的C#架构模板进行了更改&#xff0c;最终形成了这个例子。 1、 项目目录&#xff1b; 2、 源码介绍&#xff1b; 1) 初始化&#xff1b; 将样…

cloudns二级免费域名python更新ipv6 dns记录

没找到api&#xff0c;托管到cloudflare也不行。就只能写代码了&#xff08;只写了更新和添加单条ipv6记录&#xff09; 需要修改的地方 请求头的cookies填自己的 data里的zone填自己的 import requests from lxml import etree host#子域名 cookies填自己的 zone自己域名的 …

机器学习作业 | 泰坦尼克号生存的预测任务

泰坦尼克号生存的预测任务 学校作业&#xff0c;我来水一水 环境&#xff1a;pycharmanaconda虚拟环境 文章目录 泰坦尼克号生存的预测任务0.环境搭建参考&#xff1a;1 目的与要求2 任务背景3 任务简介4 模型介绍1.决策树&#xff08;Decision Tree&#xff09;2.朴素贝叶斯…

【pytorch】conda安装pytorch

Step 1 打开官网&#xff1a; https://pytorch.org/get-started/locally/ 进行选择对应版本&#xff1a; 复制图中命令执行。 Step 2 验证是否安装成功。 执行&#xff1a; import torch print(torch.cuda.is_available()) print(torch.cuda.device_count()) print(torch.…

项目开发实践——基于SpringBoot+Vue3实现的在线考试系统(四)

文章目录 一、管理员角色功能实现1、添加教师功能实现1.1 页面设计1.2 前端功能实现1.3 后端功能实现1.4 效果展示2、教师管理功能实现2.1 页面设计2.2 前端功能实现2.3 后端功能实现2.3.1 后端查询接口实现2.3.2 后端编辑接口实现2.3.3 后端删除接口实现2.4 效果展示二、代码下…