使用ADO.NET访问数据库
目录
访问数据库的步骤
1、建立数据库
2、设置链接参数
(1)web网页和数据库连接的方法一
(2)web网页和数据库连接的方法二
3、建立链接对象
4、显示数据库
5、数据库的删除
6、数据库的添加
ADO.NET可通过DateSet对象在“断开连接模式”下访问数据库。
访问数据库中的数据时,首先要建立连接,下载数据到本地缓冲区,之后断开与数据库的连接。
此时用户对数据的操作(查询、添加、修改、删除等)都是在本地进行的。
只有需要更新数据库中的数据时,才再次与数据库连接,在发送修改后的数据到数据库后关闭连接。
VS Studio中集成了sql server,虽然不是很完整,但是是可用的。所以下面的演示都是直接在VS studio中操作。
访问数据库的步骤
1、建立数据库
新建数据库的时候操作和前面新建aspx文件的一样,只不过这里不选新建web窗体,而是选择新建数据中的sql server数据库
操作步骤:添加-新建项-数据-sql server数据库-(修改名称)- 添加 -(是)
然后双击新建的项目,左侧就会出现这个项目,然后右击表,选择添加新表(也可以新建查询,不过就要自己写SQL语句):
然后添加其他属性:
然后点击左上角的更新,更新数据库,再刷新,就能看到我们新添加的数据库了:
然后就在表的里面能看到添加的表了,右击-显示表数据
在里面添加相应的数据即可。
这样就完成了数据库的新建。
2、设置链接参数
首先,要访问数据库,就要将web网页和数据库连接起来,那么应该怎么连接呢?有两种方法,下面我们分别介绍:
在这之前,我们要先清楚数据库的连接字符串以及需要导入命名空间和引用类库,这个在两种方法中都要用到:
首先,找到新建的数据库,双击,下面的属性中就可以看到连接字符串这个属性:
然后,点击到.aspx.cs文件中,添加需要导入命名空间和引用类库:
代码:
using System.Data;
using System.Data.SqlClient;
(1)web网页和数据库连接的方法一
直接在.aspx.cs文件中复制进去,但是需要将所有的转义字符改成双斜杠\\,这是因为:
反斜线\字符是转义字符的起头字符,所以连续两个反斜线,表示一个真正的反斜线字符
所以这里要表示为反斜线字符的话就需要修改掉。
不修改为双斜杠的话会出错,然后修改之后:
修改之后就不会出错了。
使用方式(应用的时候最好是直接设置为全局变量,不然后面每次使用都需要重新定义,会很麻烦):
要怎么验证配置的参数是否正确呢,这就需要查看数据库是否能够正确打开和关闭了,所以添加一个label显示数据库的开启状态,然后添加两个button,分别用于打开和关闭数据库:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data;
using System.Data.SqlClient;namespace WebApplication9
{public partial class WebForm1 : System.Web.UI.Page{//首先配置链接参数(指明所要连接的数据库的字符串)string sqlcon = "Data Source=(LocalDB)\\MSSQLLocalDB;AttachDbFilename=D:\\.net_\\WebApplication9\\WebApplication9\\App_Data\\student.mdf;Integrated Security=True";//然后建立链接对象SqlConnection myconnection = new SqlConnection();protected void Page_Load(object sender, EventArgs e){//为 myconnection 的数据库连接对象的 ConnectionString 属性赋值,myconnection 对象就知道了要连接哪个数据库,并且具备了连接所需的信息。myconnection.ConnectionString = sqlcon;//下面显示数据库的初始状态Label1.Text = myconnection.State.ToString();}protected void Button1_Click(object sender, EventArgs e){//打开数据库,然后显示状态myconnection.Open();Label1.Text = myconnection.State.ToString();}protected void Button2_Click(object sender, EventArgs e){//关闭数据库,然后显示状态myconnection.Close();Label1.Text = myconnection.State.ToString();}}
}
初始状态:
点击打开按钮:
点击关闭按钮:
可以看到,数据库可以正确打开和关闭,所以说明前面的配置是正确的。
上面的这种方法并不常用,常用的是方法二。
(2)web网页和数据库连接的方法二
使用该方法,就需要在web.config中添加一个ConnectionString,用来定义与数据库或其他数据存储源的连接信息,再导入一个命名空间:
需要添加的web.config代码:
<connectionStrings><!-- 定义名为 "studentcnnstring" 的连接字符串 --><add name="studentcnnstring"<!-- 指定连接字符串 -->connectionString="Data Source=(LocalDB)\MSSQLLocalDB;AttachDbFilename=D:\.net_\WebApplication9\WebApplication9\App_Data\student.mdf;Integrated Security=True"<!-- 指定连接的提供程序 -->providerName="System.Data.SqlClient"/>
</connectionStrings>
这里要注意大小写需要注意,不然也是会出错的。
需导入的命名空间:
using System.Configuration;
然后注释掉方法一的代码,尝试是否能实现数据库的打开和关闭:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data;
using System.Data.SqlClient;
using System.Configuration;namespace WebApplication9
{public partial class WebForm1 : System.Web.UI.Page{//首先配置链接参数(指明所要连接的数据库的字符串)//string sqlcon = "Data Source=(LocalDB)\\MSSQLLocalDB;AttachDbFilename=D:\\.net_\\WebApplication9\\WebApplication9\\App_Data\\student.mdf;Integrated Security=True";string sqlcon = ConfigurationManager.ConnectionStrings["studentcnnstring"].ToString();//然后建立链接对象SqlConnection myconnection = new SqlConnection();protected void Page_Load(object sender, EventArgs e){//为 myconnection 的数据库连接对象的 ConnectionString 属性赋值,myconnection 对象就知道了要连接哪个数据库,并且具备了连接所需的信息。myconnection.ConnectionString = sqlcon;//下面显示数据库的初始状态Label1.Text = myconnection.State.ToString();}protected void Button1_Click(object sender, EventArgs e){//打开数据库,然后显示状态myconnection.Open();Label1.Text = myconnection.State.ToString();}protected void Button2_Click(object sender, EventArgs e){//关闭数据库,然后显示状态myconnection.Close();Label1.Text = myconnection.State.ToString();}}
}
运行初始状态:
点击打开:
点击关闭:
配置正确。
3、建立链接对象
前面的例子中其实已经使用了,即:
SqlConnection myconnection = new SqlConnection();
表示在代码中创建一个新的 SqlConnection
对象,并将其赋值给名为 myconnection
的变量。
SqlConnection
是用于与 SQL Server 数据库建立连接的类。它提供了一种在应用程序中与数据库进行通信的方式。通过使用 SqlConnection
对象,可以打开、关闭、执行命令和事务,并在应用程序和数据库之间传输数据。
在上述代码中,通过调用 SqlConnection
类的默认构造函数来创建一个新的 SqlConnection
对象。这个对象还没有与任何特定的数据库连接关联。要与数据库建立实际的连接,需要为 SqlConnection
对象设置相应的连接字符串,并调用 Open()
方法。
即:
//配置链接参数
string sqlcon = ConfigurationManager.ConnectionStrings["studentcnnstring"].ToString();
//建立链接对象
SqlConnection myconnection = new SqlConnection();
//为链接对象配置链接参数
myconnection.ConnectionString = sqlcon;
//打开数据库连接
myconnection.Open();
4、显示数据库
要实现该操作,首先就按照我们原先的学习,需要使用一个控件来显示,这里使用的是gridView控件。
除此之外,我们要使用SQL查询语句,以及我们应该学习在c#中如何将数据库的内容绑定到grid view控件中,代码和详细解释如下:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data;
using System.Data.SqlClient;
using System.Configuration;namespace WebApplication9
{public partial class WebForm1 : System.Web.UI.Page{//首先配置链接参数(指明所要连接的数据库的字符串)//string sqlcon = "Data Source=(LocalDB)\\MSSQLLocalDB;AttachDbFilename=D:\\.net_\\WebApplication9\\WebApplication9\\App_Data\\student.mdf;Integrated Security=True";string sqlcon = ConfigurationManager.ConnectionStrings["studentcnnstring"].ToString();//然后建立链接对象SqlConnection myconnection = new SqlConnection();protected void Page_Load(object sender, EventArgs e){//为 myconnection 的数据库连接对象的 ConnectionString 属性赋值,myconnection 对象就知道了要连接哪个数据库,并且具备了连接所需的信息。myconnection.ConnectionString = sqlcon;//下面显示数据库的初始状态Label1.Text = myconnection.State.ToString();}protected void Button1_Click(object sender, EventArgs e){//打开数据库,然后显示状态myconnection.Open();Label1.Text = myconnection.State.ToString();}protected void Button2_Click(object sender, EventArgs e){//关闭数据库,然后显示状态myconnection.Close();Label1.Text = myconnection.State.ToString();}protected void Button3_Click(object sender, EventArgs e){//打开数据库连接myconnection.Open();//建立SQL语句string sqlcmd = "select * from studentscore";/*创建了一个 `SqlCommand` 对象,该对象可以执行 SQL 命令并将其发送到数据库,同时将该命令与之前创建的 `SqlConnection` 对象 `myconnection` 相关联。这样,就可以使用 `mycommand` 对象在数据库上执行特定的 SQL 操作,例如查询、插入、更新或删除数据。*/SqlCommand mycommand = new SqlCommand(sqlcmd, myconnection);//建立记录集,执行SQL语句,并赋值给记录集SqlDataReader myreader = mycommand.ExecuteReader();/*这行代码创建了一个 `SqlDataReader` 对象 `myreader`,用于执行 `mycommand` 对象所表示的 SQL 命令,并从数据库中读取返回的数据流。`ExecuteReader()` 方法用于执行 SQL 查询,并返回一个数据读取器,可以逐行读取查询结果。*///记录集绑定到gridview控件GridView1.DataSource = myreader;GridView1.DataBind();/*这两行代码将 `myreader` 中的数据绑定到名为 `GridView1` 的 ASP.NET 控件上,并通过 `DataBind()` 方法将数据显示在网格视图中。这样,从数据库中查询到的数据将以表格的形式展示在页面上。*///关闭记录集和链接对象myreader.Close();myconnection.Close();}}
}
运行初始状态:
点击显示数据库:
即可看到数据库里的内容。
上面的示例是用于显示整个数据库的内容,但如果想要显示某一条的话,就只需要修改SQL语句即可。那么这时候就需要在显示所有数据库中加一个判断语句,如果是第一次访问,就显示所有的,如果不是,就显示需要查询的。(在初始化下判断,然后点击button的时候,就显示满足条件的)
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data;
using System.Data.SqlClient;
using System.Configuration;namespace WebApplication9
{public partial class WebForm1 : System.Web.UI.Page{//首先配置链接参数(指明所要连接的数据库的字符串)//string sqlcon = "Data Source=(LocalDB)\\MSSQLLocalDB;AttachDbFilename=D:\\.net_\\WebApplication9\\WebApplication9\\App_Data\\student.mdf;Integrated Security=True";string sqlcon = ConfigurationManager.ConnectionStrings["studentcnnstring"].ToString();//然后建立链接对象SqlConnection myconnection = new SqlConnection();protected void Page_Load(object sender, EventArgs e){//为 myconnection 的数据库连接对象的 ConnectionString 属性赋值,myconnection 对象就知道了要连接哪个数据库,并且具备了连接所需的信息。myconnection.ConnectionString = sqlcon;//下面显示数据库的初始状态Label1.Text = myconnection.State.ToString();if (!IsPostBack){myconnection.Open();//建立SQL语句string sqlcmd = "select * from studentscore";SqlCommand mycommand = new SqlCommand(sqlcmd, myconnection);//建立记录集,执行SQL语句,并赋值给记录集SqlDataReader myreader = mycommand.ExecuteReader();//记录集绑定到gridview控件GridView1.DataSource = myreader;GridView1.DataBind();//关闭记录集和链接对象myreader.Close();myconnection.Close();}}protected void Button1_Click(object sender, EventArgs e){//打开数据库,然后显示状态myconnection.Open();Label1.Text = myconnection.State.ToString();}protected void Button2_Click(object sender, EventArgs e){//关闭数据库,然后显示状态myconnection.Close();Label1.Text = myconnection.State.ToString();}protected void Button3_Click(object sender, EventArgs e){//打开数据库连接myconnection.Open();//建立SQL语句string sqlcmd = "select * from studentscore where id=1";//这里条件是字符型,就需要加一个单引号。SqlCommand mycommand = new SqlCommand(sqlcmd, myconnection);//建立记录集,执行SQL语句,并赋值给记录集SqlDataReader myreader = mycommand.ExecuteReader();//记录集绑定到gridview控件GridView1.DataSource = myreader;GridView1.DataBind();//关闭记录集和链接对象myreader.Close();myconnection.Close();}}
}
初始状态:
点击显示数据库(即查询满足条件的):
如果想要查找的不是指定的某一条,而是输入文本框的,那么就需要定义两个变量即可:
运行初始状态:
输入相应的内容,显示输入:
但是,会出现这个错误:
这个我在课上也遇到了,我觉得可能是不能同时出现两个ExecuteReader(),我注释掉一个,就可以正常运行了,但是,那可能是凑巧前面有错误,被我注释掉了,碰到这种错误,就查看给出的提示,这里说System.Data.SqlClient.SqlException:“Incorrect syntax near 'name'.”,就去这个地方找错误,一般是语法错了,而我出错的原因就是忘记在两个条件之间加and了。修改了之后,就可以成功运行了。
运行代码:
protected void Button4_Click(object sender, EventArgs e){myconnection.Open();//建立SQL语句int id = Convert.ToInt32(TextBox1.Text);string name = TextBox2.Text;//这里条件是字符串型,就需要加一个单引号。string sqlcmd = "select * from studentscore where id="+ id + "and name='" + name + "'";SqlCommand mycommand = new SqlCommand(sqlcmd, myconnection);//建立记录集,执行SQL语句,并赋值给记录集SqlDataReader myreader = mycommand.ExecuteReader();//记录集绑定到gridview控件GridView1.DataSource = myreader;GridView1.DataBind();//关闭记录集和链接对象myreader.Close();myconnection.Close();}
如果想要查看数据库中数据的条数,则:
protected void Button5_Click(object sender, EventArgs e){myconnection.Open();//建立SQL语句string sqlcmd = "select count(*) from studentscore";SqlCommand mycommand = new SqlCommand(sqlcmd, myconnection);int count;count = (int)mycommand.ExecuteScalar();//ExecuteScalar() 方法用于执行查询并获取单一值,常用于获取汇总信息,如计数、总和等。Label2.Text = count.ToString();//关闭记录集和链接对象myconnection.Close();}
运行结果:
5、数据库的删除
protected void Button6_Click(object sender, EventArgs e){//打开数据库连接myconnection.Open();//建立SQL语句string sqlcmd = "delete from studentscore where id=1";//这里条件是字符型,就需要加一个单引号。SqlCommand mycommand = new SqlCommand(sqlcmd, myconnection);mycommand.ExecuteNonQuery();//关闭记录集和链接对象myconnection.Close();}
初始状态:
删除后:
6、数据库的添加
添加指定的:
protected void Button7_Click(object sender, EventArgs e){myconnection.Open();string sqlcmd = "insert into studentscore(name,sex,score) values('nnn','man','91') ";SqlCommand mycommand = new SqlCommand(sqlcmd, myconnection);mycommand.ExecuteNonQuery();Response.Write("<script>alert('添加成功');window.location.href='webform.aspx'</script>");}
结果:
添加文本框内的,跟前面的显示类似,用+号连接起来即可,例:
注意
这里的插入语句时错误的,有两个错误地方:
- values后面不应该有+号
- 单引号‘’是引用在变量名上的,而不是给每个符号都加。
OK,晚上再试一下,再练习。
相关文章:

使用ADO.NET访问数据库
目录 访问数据库的步骤 1、建立数据库 2、设置链接参数 (1)web网页和数据库连接的方法一 (2)web网页和数据库连接的方法二 3、建立链接对象 4、显示数据库 5、数…...

SpringBoot的旅游管理系统+论文+ppt+免费远程调试
项目介绍: 基于SpringBoot旅游网站 旅游管理系统 本旅游管理系统采用的数据库是Mysql,使用SpringBoot框架开发。在设计过程中,充分保证了系统代码的良好可读性、实用性、易扩展性、通用性、便于后期维护、操作方便以及页面简洁等特点。 (1&…...

数据结构---线性表
1,顺序表实现---动态分配 #include<stdlib.h> #define InitSize 10 typedef struct {int *data;//静态分配int length;int MaxSize; }SqList; void InitList(SqList& L) {L.data (int*)malloc(InitSize * sizeof(int));//分配空间L.length 0;L.MaxSize…...

MySQL 8.0 字符集问题导致报错
报错: ### Error querying database. Cause: java.sql.SQLException: Illegal mix of collations (utf8_general_ci,IMPLICIT) and (utf8mb4_0900_ai_ci,COERCIBLE) MySQL 8.0引入了一些新的字符集和排序规则,并对现有的进行了改进。在MySQL 8.0中&#…...

单路高清HDMI编码器JR-3211HD
产品简介: JR-3211HD单路高清HDMI编码器是专业的高清音视频编码产品,该产品具有支持1路高清HDMI音视频采集功能, 1路3.5MM独立外接音频输入,编码输出双码流H.264格式,音频MP3/AAC格式。编码码率可调,画面质…...

分库,分表,分区,分片
MySQL: 是一个开源的关系型数据库管理系统,主要用于存储和管理数据。它提供了命令行接口, SQLyog: 是一个图形化的客户端软件,专门用于管理和操作MySQL数据库。 它提供了一个直观的用户界面,简化了MySQL数据…...

【详解算法流程+程序】DBSCAN基于密度的聚类算法+源码-用K-means和DBSCAN算法对银行数据进行聚类并完成用户画像数据分析课设源码资料包
DBSCAN(Density-Based Spatial Clustering of Applications with Noise)是一个比较有代表性的基于密度的聚类算法。 与划分和层次聚类方法不同,它将簇定义为密度相连的点的最大集合,能够把具有足够高密度的区域划分为簇, 并可在噪声的空间数据…...

java es相关操作
一.es 后期修改分片数量 在Elasticsearch中一旦索引创建后,分片的数量就不能直接更改。如果需要更改分片的数量,你需要按照以下步骤操作: 创建一个新的索引,并指定所需的分片数量。 将旧索引的数据复制到新索引中。 关闭旧索引…...

腾讯EdgeOne产品测评体验——开启安全防护,保障数据无忧
当今时代数字化经济蓬勃发展人们的生活逐渐便利,类似线上购物、线上娱乐、线上会议等数字化的服务如雨后春笋般在全国遍地生长,在人们享受这些服务的同时也面临着各式各样的挑战,如网络数据会不稳定、个人隐私容易暴露、资产信息会被攻击等。…...

机器视觉图形处理软件介绍
机器视觉图形处理软件介绍 一.VisionPro 康耐视公司推出的 系统,具有快速而强大的应用系统开发能力。可快速建立原型和易于集成 。具有高可靠性、硬件灵活性。VisionPro 提供了易于应用的原型、发展和应用。VisionProQuickStart 原型环境加速了强大机器视觉系统的…...

C# WinForm简介
Winform是什么? .Net开发平台中对Windows Form的简称,基于.Net Framework平台 的客户端开发技术,一般使用C#编程。Windows 风格的控件,以及事件,直接使用,开发快速。Windows Form:Windows窗体Windows应用程…...

概念:CPU、内存、磁盘、Android内存分配
cpu CPU的全称是Central Processing Unit,中文名称为中央处理单元。它是计算机硬件的核心部件,负责解释计算机程序指令并处理计算机软件中的数据。简言之,CPU执行计算机程序中的操作指令,包括基本算术、逻辑、控制和输入/输出&am…...

Vue 图片加载失败显示默认图片
方法一:通过onerror属性加载默认图片 <img :src"img" :onerror"defaultImg" /><script> export default {data() {return {img: , // 访问图片的ip地址defaultImg: this.src ${require(/assets/images/right/default-person.png)…...

【Sentinel的限流使用】⭐️SpringBoot整合Sentinel实现Api的限流
目录 前言 一、Sentinel下载 二、SpringBoot 整合 Sentinel 三、流控规则 章末 前言 小伙伴们大家好,上次使用OpenFeign时用到了 Hystrix实现熔断和限流的功能,但是发现该工具已经停止维护了,于是想到了Spring Cloud Alibaba开发的Sentin…...

【示例】MySQL-SQL语句优化
前言 本文主要讲述不同SQL语句的优化策略。 SQL | DML语句 insert语句 插入数据的时候,改为批量插入 插入数据的时候,按照主键顺序插入 大批量插入数据的时候(百万),用load指令,从本地文件载入&#x…...

QT 线程的使用
1.头文件: #include<QThread> 2.在.h文件中定义全局: QThread* threadTraj; void threadTrajProcess();//回调函数 3.在.cpp文件中: threadTraj new QThread();//初始化 //连接槽函数 QObject::connect(threadTraj, &QThre…...

Python基于flask的豆瓣电影分析可视化系统
博主介绍:✌程序员徐师兄、7年大厂程序员经历。全网粉丝12w、csdn博客专家、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ 🍅文末获取源码联系🍅 👇🏻 精彩专栏推荐订阅👇…...

【迅为iTOP-4412-linux 系统制作(4)】ADB 或者 TF 卡烧写测试
准备工作 编译生成的内核镜像uImage 和设备树 dtb 文件“exynos4412-itop-elite.dtb”已经可以使用了。 把编译生成的uimage和dtb文件。拷贝fastboot工具。官方的u-boot-iTOP-4412.bin 也拷贝到 platform-tools 文件夹目录内。system.img 也拷贝到 platform-tools 文件夹目录…...

阿里云对象存储OSS批量上传,单个上传,批量删除,单个删除!
请自行替换秘钥: #阿里云 OSS src/main/resources/application.properties #不同的服务器,地址不同 aliyun.oss.file.endpointhttps://oss-cn-hangzhou.aliyuncs.com aliyun.oss.file.accessKeyIdLTAI5t9wUqCoD42qPGRy8S aliyun.oss.file.accessKeySecre…...

Python的国际化和本地化【第162篇—国际化和本地化】
👽发现宝藏 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。【点击进入巨牛的人工智能学习网站】。 随着全球化的发展,多语言支持在软件开发中变得越来越重要。Python作为一种流行的…...

播放Samba协议下的音视频文件
Samba(也被称为SMB/CIFS)是一个用于在局域网内共享文件和打印服务的协议,广泛应用于Windows和Linux系统之间的文件共享。 一、展示Samba服务器下的文件 使用如jcifs这样的Java库来在安卓应用中集成SMB/CIFS客户端功能。这个库提供了与SMB/CI…...

Excel全套213集教程
Excel全套213集教程 包含技术入门93集 图表17集 数据透视35集 公式函数68 基础入门 93节 https://www.alipan.com/s/cMxuPstkS1x 提取码: 77dd 点击链接保存,或者复制本段内容,打开「阿里云盘」APP ,无需下载极速在线查看,视…...

【七 (1)指标体系建设-构建高效的故障管理指标体系】
目录 文章导航一、故障概述1、故障:2、故障管理: 二、指标体系概述1、指标2、指标体系 三、指标体系构建难点1、管理视角2、业务视角3、技术视角 四、指标体系构建原则1、与战略目标对齐2、综合和平衡3、数据可获得性4、可操作性5、具体和可衡量6、参与和…...

Go gin框架(详细版)
目录 0. 为什么会有Go 1. 环境搭建 2. 单-请求&&返回-样例 3. RESTful API 3.1 首先什么是RESTful API 3.2 Gin框架支持RESTful API的开发 4. 返回前端代码 go.main index.html 5. 添加静态文件 main.go 改动的地方 index.html 改动的地方 style.css 改动…...

Git分布式版本控制系统——Git常用命令(二)
五、Git常用命令————分支操作 同一个仓库可以有多个分支,各个分支相互独立,互不干扰 分支的相关命令,具体如下: git branch 查看分支 git branch [name] 创建分支&#x…...

LeetCode 59.螺旋矩阵II
LeetCode 59.螺旋矩阵II 1、题目 力扣题目链接:59. 螺旋矩阵 II - 力扣(LeetCode) 给你一个正整数 n ,生成一个包含 1 到 n2 所有元素,且元素按顺时针顺序螺旋排列的 n x n 正方形矩阵 matrix 。 示例 1࿱…...

03-JAVA设计模式-适配器模式
适配器模式 设么是适配器模式 它属于结构型模式,主要用于将一个类的接口转换成客户端所期望的另一种接口,从而使得原本由于接口不兼容而无法协同工作的类能够一起工作。 适配器模式主要解决的是不兼容接口的问题。在软件开发中,经常会有这…...

MVVM架构模式
目录 MVVM 数据绑定方式 实现方式 Model View ViewModel 数据绑定方式 vue:: 数据劫持和发布-订阅模式: Object.defineProperty() 方法来劫持(监控)各属性的 getter 、setter ,并在数据(对…...

leetcode2924--找到冠军II
1. 题意 给定一个有向无环图,方向表示胜负关系;求最后胜出的人。 2. 题解 将所有人标记为胜者,统计出度去掉对应胜者标记; 最后统计胜者数目,是否大于1,若大于1,则没有胜者,否则…...

嵌入式|蓝桥杯STM32G431(HAL库开发)——CT117E学习笔记13:RTC实时时钟
系列文章目录 嵌入式|蓝桥杯STM32G431(HAL库开发)——CT117E学习笔记01:赛事介绍与硬件平台 嵌入式|蓝桥杯STM32G431(HAL库开发)——CT117E学习笔记02:开发环境安装 嵌入式|蓝桥杯STM32G431(…...