使用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作为一种流行的…...

MPNet:旋转机械轻量化故障诊断模型详解python代码复现
目录 一、问题背景与挑战 二、MPNet核心架构 2.1 多分支特征融合模块(MBFM) 2.2 残差注意力金字塔模块(RAPM) 2.2.1 空间金字塔注意力(SPA) 2.2.2 金字塔残差块(PRBlock) 2.3 分类器设计 三、关键技术突破 3.1 多尺度特征融合 3.2 轻量化设计策略 3.3 抗噪声…...

使用VSCode开发Django指南
使用VSCode开发Django指南 一、概述 Django 是一个高级 Python 框架,专为快速、安全和可扩展的 Web 开发而设计。Django 包含对 URL 路由、页面模板和数据处理的丰富支持。 本文将创建一个简单的 Django 应用,其中包含三个使用通用基本模板的页面。在此…...

shell脚本--常见案例
1、自动备份文件或目录 2、批量重命名文件 3、查找并删除指定名称的文件: 4、批量删除文件 5、查找并替换文件内容 6、批量创建文件 7、创建文件夹并移动文件 8、在文件夹中查找文件...

高危文件识别的常用算法:原理、应用与企业场景
高危文件识别的常用算法:原理、应用与企业场景 高危文件识别旨在检测可能导致安全威胁的文件,如包含恶意代码、敏感数据或欺诈内容的文档,在企业协同办公环境中(如Teams、Google Workspace)尤为重要。结合大模型技术&…...
关于 WASM:1. WASM 基础原理
一、WASM 简介 1.1 WebAssembly 是什么? WebAssembly(WASM) 是一种能在现代浏览器中高效运行的二进制指令格式,它不是传统的编程语言,而是一种 低级字节码格式,可由高级语言(如 C、C、Rust&am…...

Map相关知识
数据结构 二叉树 二叉树,顾名思义,每个节点最多有两个“叉”,也就是两个子节点,分别是左子 节点和右子节点。不过,二叉树并不要求每个节点都有两个子节点,有的节点只 有左子节点,有的节点只有…...

RNN避坑指南:从数学推导到LSTM/GRU工业级部署实战流程
本文较长,建议点赞收藏,以免遗失。更多AI大模型应用开发学习视频及资料,尽在聚客AI学院。 本文全面剖析RNN核心原理,深入讲解梯度消失/爆炸问题,并通过LSTM/GRU结构实现解决方案,提供时间序列预测和文本生成…...

项目部署到Linux上时遇到的错误(Redis,MySQL,无法正确连接,地址占用问题)
Redis无法正确连接 在运行jar包时出现了这样的错误 查询得知问题核心在于Redis连接失败,具体原因是客户端发送了密码认证请求,但Redis服务器未设置密码 1.为Redis设置密码(匹配客户端配置) 步骤: 1).修…...

企业如何增强终端安全?
在数字化转型加速的今天,企业的业务运行越来越依赖于终端设备。从员工的笔记本电脑、智能手机,到工厂里的物联网设备、智能传感器,这些终端构成了企业与外部世界连接的 “神经末梢”。然而,随着远程办公的常态化和设备接入的爆炸式…...

使用Spring AI和MCP协议构建图片搜索服务
目录 使用Spring AI和MCP协议构建图片搜索服务 引言 技术栈概览 项目架构设计 架构图 服务端开发 1. 创建Spring Boot项目 2. 实现图片搜索工具 3. 配置传输模式 Stdio模式(本地调用) SSE模式(远程调用) 4. 注册工具提…...