使用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作为一种流行的…...
从WWDC看苹果产品发展的规律
WWDC 是苹果公司一年一度面向全球开发者的盛会,其主题演讲展现了苹果在产品设计、技术路线、用户体验和生态系统构建上的核心理念与演进脉络。我们借助 ChatGPT Deep Research 工具,对过去十年 WWDC 主题演讲内容进行了系统化分析,形成了这份…...
8k长序列建模,蛋白质语言模型Prot42仅利用目标蛋白序列即可生成高亲和力结合剂
蛋白质结合剂(如抗体、抑制肽)在疾病诊断、成像分析及靶向药物递送等关键场景中发挥着不可替代的作用。传统上,高特异性蛋白质结合剂的开发高度依赖噬菌体展示、定向进化等实验技术,但这类方法普遍面临资源消耗巨大、研发周期冗长…...
高频面试之3Zookeeper
高频面试之3Zookeeper 文章目录 高频面试之3Zookeeper3.1 常用命令3.2 选举机制3.3 Zookeeper符合法则中哪两个?3.4 Zookeeper脑裂3.5 Zookeeper用来干嘛了 3.1 常用命令 ls、get、create、delete、deleteall3.2 选举机制 半数机制(过半机制࿰…...
ETLCloud可能遇到的问题有哪些?常见坑位解析
数据集成平台ETLCloud,主要用于支持数据的抽取(Extract)、转换(Transform)和加载(Load)过程。提供了一个简洁直观的界面,以便用户可以在不同的数据源之间轻松地进行数据迁移和转换。…...
微服务商城-商品微服务
数据表 CREATE TABLE product (id bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT 商品id,cateid smallint(6) UNSIGNED NOT NULL DEFAULT 0 COMMENT 类别Id,name varchar(100) NOT NULL DEFAULT COMMENT 商品名称,subtitle varchar(200) NOT NULL DEFAULT COMMENT 商…...
Spring AI 入门:Java 开发者的生成式 AI 实践之路
一、Spring AI 简介 在人工智能技术快速迭代的今天,Spring AI 作为 Spring 生态系统的新生力量,正在成为 Java 开发者拥抱生成式 AI 的最佳选择。该框架通过模块化设计实现了与主流 AI 服务(如 OpenAI、Anthropic)的无缝对接&…...
学习STC51单片机32(芯片为STC89C52RCRC)OLED显示屏2
每日一言 今天的每一份坚持,都是在为未来积攒底气。 案例:OLED显示一个A 这边观察到一个点,怎么雪花了就是都是乱七八糟的占满了屏幕。。 解释 : 如果代码里信号切换太快(比如 SDA 刚变,SCL 立刻变&#…...
让回归模型不再被异常值“带跑偏“,MSE和Cauchy损失函数在噪声数据环境下的实战对比
在机器学习的回归分析中,损失函数的选择对模型性能具有决定性影响。均方误差(MSE)作为经典的损失函数,在处理干净数据时表现优异,但在面对包含异常值的噪声数据时,其对大误差的二次惩罚机制往往导致模型参数…...
在QWebEngineView上实现鼠标、触摸等事件捕获的解决方案
这个问题我看其他博主也写了,要么要会员、要么写的乱七八糟。这里我整理一下,把问题说清楚并且给出代码,拿去用就行,照着葫芦画瓢。 问题 在继承QWebEngineView后,重写mousePressEvent或event函数无法捕获鼠标按下事…...
springboot整合VUE之在线教育管理系统简介
可以学习到的技能 学会常用技术栈的使用 独立开发项目 学会前端的开发流程 学会后端的开发流程 学会数据库的设计 学会前后端接口调用方式 学会多模块之间的关联 学会数据的处理 适用人群 在校学生,小白用户,想学习知识的 有点基础,想要通过项…...
