使用ADO.NET访问数据库

news2024/11/27 1:40:59

   

目录

访问数据库的步骤

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>");
        }

结果: 

添加文本框内的,跟前面的显示类似,用+号连接起来即可,例:

OK,就先这样吧。

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

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

相关文章

el-table 表格分页序号问题

el-table-column 本身提供typeindex 但是每次切换分页 序号都是1-9 想要获取当前页数的条数序号 获取不到 <el-table-column label"序号" width"60" align"center"><template #default"scope"><div>{{ (queryPara…

数据库之DQL操作(数据查询语言)

DQL英文全称是Data Query Language(数据查询语言)&#xff0c;数据查询语言&#xff0c;用来查询数据库中表的记录。查询关键字: SELECT。 本节介绍以下表为例&#xff1a; create table emp(id int comment 编号&#xff0c;workno varchar(10) comment 工号&#xff0c;nam…

解决npm install安装node-sass包容易失败的问题

具体问题如下&#xff1a; npm ERR! code ERESOLVE npm ERR! ERESOLVE unable to resolve dependency tree npm ERR! npm ERR! While resolving: XXX3.4.0 npm ERR! Found: webpack5.31.2 npm ERR! node_modules/webpack npm ERR! peer webpack”^4.0.0 || ^5.0.0″ from html-…

学生台灯护眼灯哪个牌子好?护眼台灯推荐儿童必备

当前&#xff0c;青少年及儿童的近视率居高不下&#xff0c;实际数据甚至超出了半数的比例。这意味着超过一半的孩子们可能面临着某种程度的视力问题&#xff0c;这一现象无疑让每位家长的心都紧绷起来&#xff0c;对孩子的视力健康格外关注。尤其是孩子学习时使用的那一盏台灯…

心灵鸡汤之励志正能量文案,积极向上热爱生活短句

1、在一切变好之前&#xff0c;我们总要经历一些不开心的日子&#xff0c;这段日子也许很长&#xff0c;也许只是一觉醒来。有时候&#xff0c;选择快乐&#xff0c;更需要勇气。 2、靠自己&#xff0c;才能无惧艰难&#xff0c;靠他人&#xff0c;永远害怕风霜&#xff0c;别…

【第二十七篇】几款配合Burpsuite使用的Google插件(Wappalyzer、FindSomething、FOFAproView等)

文章目录 WappalyzerFindSomethingFOFA Pro ViewsuperSearchPluswayback machinesource detecotorX-Forwarded-For Header以下插件均在Google应用商店中下载 Wappalyzer Wappalyzer是一个用于识别网站所使用的技术和工具的浏览器扩展程序。它能够检测出网站所使用的内容管理系…

操作系统(第三周 第二堂)

目录 ⚽回顾 &#x1f3d0;进程管理&#xff08;process&#xff09; 进程理解&#xff08;总结&#xff09; 进程 程序到进程 内存中的进程 进程状态 状态类型 状态转移 进程控制块 &#x1f3c0;总结 回顾 前一篇文章的重点在于操作系统的结构&#xff0c;从简单…

【数据结构】考研真题攻克与重点知识点剖析 - 第 8 篇:排序

前言 本文基础知识部分来自于b站&#xff1a;分享笔记的好人儿的思维导图与王道考研课程&#xff0c;感谢大佬的开源精神&#xff0c;习题来自老师划的重点以及考研真题。此前我尝试了完全使用Python或是结合大语言模型对考研真题进行数据清洗与可视化分析&#xff0c;本人技术…

Java每日一题

我的思路: 1.排序 2.固定一个数&#xff0c;然后将问题转换为俩个数之和为固定数的相反数 3.在固定数&#xff0c;后面利用"双指针算法"快速找到两个的和等于-a即可 4.处理这个题的细节问题 1.去重 找到一个结果之后&#xff0c;将left和right指针要跳过前面的重复元…

MLOps 体系结构模型

人工智能继续改变企业&#xff0c;但这导致企业在数字化转型和组织变革方面面临新的挑战。根据 2023 年福布斯报告&#xff0c;这些挑战可以总结如下&#xff1a; 分析技术堆栈围绕分析/批处理工作负载构建的公司需要开始适应实时数据处理&#xff08;福布斯&#xff09;。这种…

【保姆级讲解PyCharm安装教程】

&#x1f3a5;博主&#xff1a;程序员不想YY啊 &#x1f4ab;CSDN优质创作者&#xff0c;CSDN实力新星&#xff0c;CSDN博客专家 &#x1f917;点赞&#x1f388;收藏⭐再看&#x1f4ab;养成习惯 ✨希望本文对您有所裨益&#xff0c;如有不足之处&#xff0c;欢迎在评论区提出…

js获取上周本周下周的日期(附Demo)

目录 前言1. 基本知识2. Demo3. 彩蛋 前言 现在的时间点是&#xff1a;2024-04-08&#xff0c;对应的日期如下&#xff08;上周、这周、下周&#xff09; 1. 基本知识 讲述Demo之前&#xff0c;先补充一些基础知识 JavaScript 中的 Date 对象是用于处理日期和时间的对象。它…

博客系统实现

一.准备工作 1.创建项目&#xff0c;把前端写好的博客静态页面拷贝到webapp目录中 2.引入依赖&#xff0c;这里主要用到servlet&#xff0c;mysql5.1.47&#xff0c;jacson2.15.0 3.找到右上角的edit configurations->smartTomcat->进行配置 4.数据库设计&#xff1a…

十四款大型语言模型在《街头霸王III》中一决雌雄

上周在旧金山举办的Mistral AI黑客马拉松上&#xff0c;开发出了一款基于经典街机游戏《街头霸王III》的人工智能&#xff08;AI&#xff09;基准测试。这款名为“AI Street Fighter III”的开源基准测试由Stan Girard和Quivr Brain开发&#xff0c;游戏在模拟器中运行&#xf…

【力扣刷题日记】1495.上月播放的儿童适宜电影

前言 练习sql语句&#xff0c;所有题目来自于力扣&#xff08;https://leetcode.cn/problemset/database/&#xff09;的免费数据库练习题。 今日题目&#xff1a; 1495.上月播放的儿童适宜电影 表&#xff1a;TVProgram 列名类型program_datedatecontent_idintchannelvarc…

【机器学习】深入解析机器学习基础

在本篇深入探讨中&#xff0c;我们将揭开机器学习背后的基础原理&#xff0c;这不仅包括其数学框架&#xff0c;更涵盖了从实际应用到理论探索的全方位视角。机器学习作为数据科学的重要分支&#xff0c;其力量来源于算法的能力&#xff0c;这些算法能够从数据中学习并做出预测…

产品推荐 | 基于Intel(Altera)Arria 10 10AS027/048打造的水星Mercury+ AA1核心板

01 产品概述 水星Mercury AA1片上系统&#xff08;SoC&#xff09;核心板通过结合基于ARM处理器的SoC FPGA、快速DDR4 ECC SDRAM、eMMC flash、QSPI flash、Gigabit Ethernet PHY和RTC形成了一个高性能嵌入式处理方案&#xff0c;结合了CPU系统的灵活性和FPGA原始的、实时的并…

【PolarDB-X从入门到精通】 第四讲:一站式学习源码部署

亲爱的同学们&#xff1a; 大家好&#xff01;在之前的课程中&#xff0c;我们已经初步了解了PolarDB-X的架构、安装部署PolarDB-X的四种方式以及如何使用Docker和PXD进行安装部署。接下来&#xff0c;我们将进入更加专业的领域——源码编译部署PolarDB-X。 课程主题&#xf…

YOLOV8注意力改进方法:DilateFormer多尺度空洞 Transformer(附改进代码)

原论文地址:原论文下载地址 即插即用的多尺度全局注意力机制 本文提出了一种新颖的多尺度空洞 Transformer,简称DilateFormer,以用于视觉识别任务。原有的 ViT 模型在计算复杂性和感受野大小之间的权衡上存在矛盾。众所周知,ViT 模型使用全局注意力机制,能够在任意图像块…

C语言 函数——函数原型

目录 如何合并成一个完整的程序&#xff1f; 函数原型与函数定义的区别 函数原型的作用 如何合并成一个完整的程序&#xff1f; 问题&#xff1a;在一个函数中调用另一个函数&#xff0c;需要具备哪些条件呢&#xff1f; 若函数的定义出现在函数调用之前 若函数的定义出现…