当前位置: 首页 > news >正文

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

结果: 

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

 注意

        这里的插入语句时错误的,有两个错误地方:

  1. values后面不应该有+号
  2. 单引号‘’是引用在变量名上的,而不是给每个符号都加。

OK,晚上再试一下,再练习。

相关文章:

使用ADO.NET访问数据库

目录 访问数据库的步骤 &#xff11;、建立数据库 &#xff12;、设置链接参数 &#xff08;1&#xff09;web网页和数据库连接的方法一 &#xff08;2&#xff09;web网页和数据库连接的方法二 &#xff13;、建立链接对象 &#xff14;、显示数据库 &#xff15;、数…...

SpringBoot的旅游管理系统+论文+ppt+免费远程调试

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

数据结构---线性表

1&#xff0c;顺序表实现---动态分配 #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 字符集问题导致报错

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

单路高清HDMI编码器JR-3211HD

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

分库,分表,分区,分片

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

【详解算法流程+程序】DBSCAN基于密度的聚类算法+源码-用K-means和DBSCAN算法对银行数据进行聚类并完成用户画像数据分析课设源码资料包

DBSCAN(Density-Based Spatial Clustering of Applications with Noise)是一个比较有代表性的基于密度的聚类算法。 与划分和层次聚类方法不同&#xff0c;它将簇定义为密度相连的点的最大集合&#xff0c;能够把具有足够高密度的区域划分为簇&#xff0c; 并可在噪声的空间数据…...

java es相关操作

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

腾讯EdgeOne产品测评体验——开启安全防护,保障数据无忧

当今时代数字化经济蓬勃发展人们的生活逐渐便利&#xff0c;类似线上购物、线上娱乐、线上会议等数字化的服务如雨后春笋般在全国遍地生长&#xff0c;在人们享受这些服务的同时也面临着各式各样的挑战&#xff0c;如网络数据会不稳定、个人隐私容易暴露、资产信息会被攻击等。…...

机器视觉图形处理软件介绍

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

C# WinForm简介

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

概念:CPU、内存、磁盘、Android内存分配

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

Vue 图片加载失败显示默认图片

方法一&#xff1a;通过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 三、流控规则 章末 前言 小伙伴们大家好&#xff0c;上次使用OpenFeign时用到了 Hystrix实现熔断和限流的功能&#xff0c;但是发现该工具已经停止维护了&#xff0c;于是想到了Spring Cloud Alibaba开发的Sentin…...

【示例】MySQL-SQL语句优化

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

QT 线程的使用

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

Python基于flask的豆瓣电影分析可视化系统

博主介绍&#xff1a;✌程序员徐师兄、7年大厂程序员经历。全网粉丝12w、csdn博客专家、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精彩专栏推荐订阅&#x1f447;…...

【迅为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批量上传,单个上传,批量删除,单个删除!

请自行替换秘钥&#xff1a; #阿里云 OSS src/main/resources/application.properties #不同的服务器&#xff0c;地址不同 aliyun.oss.file.endpointhttps://oss-cn-hangzhou.aliyuncs.com aliyun.oss.file.accessKeyIdLTAI5t9wUqCoD42qPGRy8S aliyun.oss.file.accessKeySecre…...

Python的国际化和本地化【第162篇—国际化和本地化】

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

SCAU期末笔记 - 数据分析与数据挖掘题库解析

这门怎么题库答案不全啊日 来简单学一下子来 一、选择题&#xff08;可多选&#xff09; 将原始数据进行集成、变换、维度规约、数值规约是在以下哪个步骤的任务?(C) A. 频繁模式挖掘 B.分类和预测 C.数据预处理 D.数据流挖掘 A. 频繁模式挖掘&#xff1a;专注于发现数据中…...

ios苹果系统,js 滑动屏幕、锚定无效

现象&#xff1a;window.addEventListener监听touch无效&#xff0c;划不动屏幕&#xff0c;但是代码逻辑都有执行到。 scrollIntoView也无效。 原因&#xff1a;这是因为 iOS 的触摸事件处理机制和 touch-action: none 的设置有关。ios有太多得交互动作&#xff0c;从而会影响…...

HDFS分布式存储 zookeeper

hadoop介绍 狭义上hadoop是指apache的一款开源软件 用java语言实现开源框架&#xff0c;允许使用简单的变成模型跨计算机对大型集群进行分布式处理&#xff08;1.海量的数据存储 2.海量数据的计算&#xff09;Hadoop核心组件 hdfs&#xff08;分布式文件存储系统&#xff09;&a…...

站群服务器的应用场景都有哪些?

站群服务器主要是为了多个网站的托管和管理所设计的&#xff0c;可以通过集中管理和高效资源的分配&#xff0c;来支持多个独立的网站同时运行&#xff0c;让每一个网站都可以分配到独立的IP地址&#xff0c;避免出现IP关联的风险&#xff0c;用户还可以通过控制面板进行管理功…...

MinIO Docker 部署:仅开放一个端口

MinIO Docker 部署:仅开放一个端口 在实际的服务器部署中,出于安全和管理的考虑,我们可能只能开放一个端口。MinIO 是一个高性能的对象存储服务,支持 Docker 部署,但默认情况下它需要两个端口:一个是 API 端口(用于存储和访问数据),另一个是控制台端口(用于管理界面…...

jdbc查询mysql数据库时,出现id顺序错误的情况

我在repository中的查询语句如下所示&#xff0c;即传入一个List<intager>的数据&#xff0c;返回这些id的问题列表。但是由于数据库查询时ID列表的顺序与预期不一致&#xff0c;会导致返回的id是从小到大排列的&#xff0c;但我不希望这样。 Query("SELECT NEW com…...

轻量安全的密码管理工具Vaultwarden

一、Vaultwarden概述 Vaultwarden主要作用是提供一个自托管的密码管理器服务。它是Bitwarden密码管理器的第三方轻量版&#xff0c;由国外开发者在Bitwarden的基础上&#xff0c;采用Rust语言重写而成。 &#xff08;一&#xff09;Vaultwarden镜像的作用及特点 轻量级与高性…...

c++算法学习3——深度优先搜索

一、深度优先搜索的核心概念 DFS算法是一种通过递归或栈实现的"一条路走到底"的搜索策略&#xff0c;其核心思想是&#xff1a; 深度优先&#xff1a;从起点出发&#xff0c;选择一个方向探索到底&#xff0c;直到无路可走 回溯机制&#xff1a;遇到死路时返回最近…...

OCC笔记:TDF_Label中有多个相同类型属性

注&#xff1a;OCCT版本&#xff1a;7.9.1 TDF_Label中有多个相同类型的属性的方案 OCAF imposes the restriction that only one attribute type may be allocated to one label. It is necessary to take into account the design of the application data tree. For exampl…...

Java + Spring Boot + Mybatis 插入数据后,获取自增 id 的方法

在 MyBatis 中使用 useGeneratedKeys"true" 获取新插入记录的自增 ID 值&#xff0c;可通过以下步骤实现&#xff1a; 1. 配置 Mapper XML 在插入语句的 <insert> 标签中设置&#xff1a; xml 复制 下载 运行 <insert id"insertUser" para…...