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

SQL 语句继续学习之记录三

一,数据的插入(insert 语句的使用方法)

使用insert语句可以向表中插入数据(行)。原则上,insert语句每次执行一行数据的插入。

列名和值用逗号隔开,分别扩在()内,这种形式称为清单。

对表中所有列进行insert 操作时可以省略表名后的列清单。

插入null时需要在values子句的值清单中写入null。

可以为表中的列设定默认值(初始值)。默认值可以通过在create table语句中,为列设置default约束来设定。

插入默认值可以通过两种方式实现。即在insert语句的values子句中指定default关键字(显示方法),或省略列清单(隐式方法)。

使用 insert ...select 可以从其他表中复制数据。

1,什么是insert

通过create table 语句创建出来的表,可以将其比作一个空空如也的箱子,只有把数据装入到箱子中,它才能被称为数据库。

为了学习insert语句,我们创建一张新表,除了为hanbai_tanka 列(销售单价)设置了Default ) 的约束外,其他与之前的完全相同。

如上,仅仅创建了一张空表,还没有插入数据

2,insert 语句的基本语法

INSERT into <表名> (列1,列2,列3,...) values (值1,值2,值3,...);

 由于shohin_id, shohin_mei,shohin_bunrui 列是字符型,所以插入的数据需要加单引号,torokubi是日期类型,也需要加单引号。

列清单—— (shohin_id,shohin_mei,shohin_bunrui,hanbai_tanka,shiire_tanka,torokubi)

值清单——('0001','T恤衫','衣服',1000,500,'2009-09-20')

注意,值清单中列的个数需和列清单中列的数量一致,否则语句错误。

并且,原则上,执行一次insert语句会插入一行数据。因此,插入多行时,通常需要循环执行所需次数的insert语句。但是关于多行insert,在部份DBMS中,支持如下多行insert 语句

insert into shoinIns values 
('0002','打孔器','办公用品',500,320,'2009-09-11'),
('0003','运动T恤','衣服',4000,2800,null),
('0004','菜刀','厨房用具',3000,2800,'2009-09-20');

如上,对表进行全列insert时,可以省略表名后的列清单。这时values子句的值会默认按照从左到右的顺序赋给每一列。

3,插入null

insert into shoinIns values 
('0003','运动T恤','衣服',4000,2800,null),

如上介绍中,insert语句中想要给某一列赋予null值时,可以直接在values子句的值清单中写入null,但是想要插入null的列一定不能设置not null 约束。

4,插入默认值

可以向表中插入默认值(初始值)。默认值的设定,可以通过在创建表的create table语句中设置default约束来实现。本次创建表语句时,

create table shoinIns
(shohin_id CHAR(4) not null,
shohin_mei VARCHAR(100) not null,
shohin_bunrui VARCHAR(32) not null,
hanbai_tanka INTEGER DEFAULT 0,
shiire_tanka INTEGER ,
torokubi DATE ,
primary key (shohin_id));

其中hanbai_tanka integer Default 0, 意思就是为hanbai_tanka 列设置了0 这样的默认值,如果插入一行数据,在不提供值或者提供default值时,该值即为 0 。

有2中方式插入默认值,称为显示插入默认值或者隐式插入默认值。

1)显示插入默认值示例如下

Insert into shoinIns (shohin_id,shohin_mei,shohin_bunrui,hanbai_tanka,shiire_tanka,torokubi)
values ('0007','切菜板','厨房用具',DEFAULT,790,'2009-04-28');

上述Default 即为创建表时设置的 0,

2) 通过隐式方法插入默认值

插入默认值时可以不使用default关键字,只要在列清单和values 中省略设定了默认值的列即可

Insert into shoinIns (shohin_id,shohin_mei,shohin_bunrui,shiire_tanka,torokubi)
values ('0007','切菜板','厨房用具',790,'2009-04-28');

 但是注意,如果省略了没有设定默认值的列的话,该列的值就会被设定为null。如果省略的是设置了not null 约束列的话,insert语句就会出错。

如果设定默认值的列名被省略,就会自动设定为该列的默认值

如果没有设置默认值的列名被省略,就会自动设定为null

3) 从其他表中复制数据

除了使用values 子句指定具体的数据插入数据外,还可以从其他表中复制数据。如下示例

先创建一张表ShohinCopy表,表结构和shohin表完全一样

create table ShohinCopy
(shohin_id CHAR(4) not null,
shohin_mei VARCHAR(100) not null,
shohin_bunrui VARCHAR(32) not null,
hanbai_tanka INTEGER ,
shiire_tanka INTEGER ,
torokubi DATE ,
primary key (shohin_id));
INSERT INTO ShohinCopy (shohin_id,shohin_mei,shohin_bunrui,hanbai_tanka,shiire_tanka,torokubi)
select shohin_id,shohin_mei,shohin_bunrui,hanbai_tanka,shiire_tanka,torokubi from shohin;SELECT * from ShohinCopy;

insert ...select 常用于数据备份

b insert 中多种多样的select

执行insert... select 时,select语句除了select... from ..外,还可以带其他的where, group by 等子句,之前学些到的select语句都可以使用。例如下面我们尝试将含有group by 的select 语句进行insert

创建ShohinBunrui 表的create table 语句

-- 创建ShohinBunrui 表的create table 语句
-- 用来汇总商品种类的表
create table ShohinBunrui
(shohin_bunrui varchar(32) not null,
sum_hanbai_tanka integer,
sum_shiire_tanka integer,
primary key (shohin_bunrui));

该表是用来存储根据商品种类(shohin_bunrui) 计算出销售单价合计值以及进货单价合计值的表。我们从shohin表中取出数据放入该表中

INSERT into ShohinBunrui (shohin_bunrui,sum_hanbai_tanka,sum_shiire_tanka)
select shohin_bunrui,SUM(hanbai_tanka),SUM(shiire_tanka)
from shohin
group by shohin_bunrui;

二、数据的删除(delete 语句的使用方法)

如果想将整个表全部删除,可以使用drop table 语句;

如果只想删除表中全部数据,需使用delete 语句

如果想删除部份数据行,只需在where子句中书写对象数据的条件即可。

通过where子句指定删除对象的delete语句称为搜索型delete语句。

1,drop table 语句和delete语句

1)drop table 语句可以将表完全删除;

2)delete table 语句会留下表(容器),而删除表中的全部数据;

语法

1)drop table <表名>;

2)delete from <表名>;

2, 指定删除对象的delete 语句(搜索型delete)

想要删除表中部份数据行时,可以像使用where子句指定删除条件。指定了删除条件的delete语句称为搜索型delete。

删除部份数据行的搜索型delete语句语法

delete from <表名>
where <条件>;

示例:假设我们要删除商品复制表中销售单价(hanbai_tanka) 大于等于4000的记录,即删除如下标记记录

delete from ShohinCopy
where hanbai_tanka >= 4000;

再次查询数据,结果即

千万需要注意的是,删除表中数据时(delete 语句),只能使用where 子句,不能使用其他的例如group by, having, order by 等子句,由于delete是对表中原始数据进行处理,group by,having是用来抽取数据时进行展示限定,order by 也是对从表中抽取数据后进行处理,所以这些句子都不能参与到delete 语句中

三,数据的更新(update 语句的使用方法)

使用update语句可以更新表中的数据

更新部份数据行时可以使用where来指定更新对象的条件。通过where子句指定更新对象的update语句称为搜索型update语句

update 语句可以将列的值更新为null

同时更新多列时,可以在update语句的set子句中,使用逗号分隔更新对象的多个列

1,update 语句的基本语法

update <表名>
set <列名> = <表达式>;

示例,我们把商品(shohin )表中torokubi列(登记日期)的所有数据统一更新为“2009-10-10”

update shohin
set torokubi = '2009-10-10';

2, 通常情况,很少会直接将某列全部行数据更新为某个特定值,更多的是找到某一行或者某几行数据进行更新,此时就需要用到where 语句,类似delete语句中使用where指定条件一样。

示例,我们将商品表中厨房用具的销售单价更新为原来的10 倍,参考如下代码

update shohin 
set hanbai_tanka = hanbai_tanka * 10
where shohin_bunrui = '厨房用具';

3, 使用null进行更新

使用update 也可以将列更新为null(改更新俗称为null清空),此时只需要将赋值表达式右边的值直接写为null即可

示例:我们将商品编号(shohin_id) 为0008 的数据(圆珠笔)的登记日期(torokubi) 更新为null,

update shohin 
set torokubi = NULL 
where shohin_id = '0008';

注意:使用update 语句可以将值清空为null(但只限于未设置not null 约束的列)

4,多列更新

update 语句的set 语句支持同时将多个列作为更新对象。例如,我们刚将销售单价更新为原来的10 倍,如果我们希望同时将进货单价更新为原来的一半,可以考虑如下方案,

方案一, 将两个要求分两次完成,第一次只修改销售单价,第二次只修改进货单价;

方案二, 通过一个update 语句,将两个需求同时完成,此处有2种写法,但是由于一种方法并非所有DBMS支持,我们仅介绍一种所有DBMS都支持的方案实现,示例如下

UPDATE shohin 
set hanbai_tanka = hanbai_tanka * 10,shiire_tanka = shiire_tanka / 2
where shohin_bunrui = '厨房用具';

四,事务

1,什么是事务

在RDBMS中,事务代表了对表中数据进行更新的单位。简单来说,事务就是需要在同一个处理单元中执行的一系列更新处理的集合。

对表进行更新需要使用insert,update, delete 三种语句。但通常情况下,更新处理并不是执行一次就结束了,而是需要执行一系列连续的操作。这时,事务的价值就要体现了。

最常见的示例就是,转账操作,转账操作意味着要两个操作,一个账户减少金额,另一个增加金额,这两个操作要全部完成,才意味着转账成功。转账就可以作为一个事务来看待。

2,创建事务

如果想在DBMS中创建事务,可以按照如下语法结构编写sql语句

事务开始语句,

DML 语句;

DML语句;

DML语句;

事务结束语句(commit 或者rollback);

使用事务开始语句和事务结束语句,将一系列DML语句(insert/update/delete语句)括起来,就实现了一个事务处理。

注意:在标准sql中并没有定义事务的开始语句,而是由各个DBMS自己来定义的。

mysql 的事务开始语句是start transaction

sql server 和postgreSQL 的开始语句是begin transaction

oracle 和DB2 没有开始语句

示例,假如我们将运动T恤的销售单价降低1000元,将T恤的销售单价上调1000 元,

将上述操作放在一个事务中处理,以mysql示例是

start transaction;-- 将运动T恤的销售单价降低1000
update shohin 
set hanbai_tanka = hanbai_tanka - 1000
where shohin_mei = '运动T恤';-- 将T恤的销售单价上浮1000
update shohin 
set hanbai_tanka = hanbai_tanka + 1000
where shohin_mei = 'T恤衫';commit;

在postgreSql 和sql Server 中,示例如下

Begin transaction;-- 将运动T恤的销售单价降低1000
update shohin 
set hanbai_tanka = hanbai_tanka - 1000
where shohin_mei = '运动T恤';-- 将T恤的销售单价上浮1000
update shohin 
set hanbai_tanka = hanbai_tanka + 1000
where shohin_mei = 'T恤衫';commit;

3,commit 提交处理

commit 是提交事务包含的全部更新处理的结束指令。相当于文件处理中的覆盖保存。一旦提交,就无法恢复到事务开始前的状态了。因此,在提交之前一定要确认是否真的需要进行这些更新。

万一由于误操作提交了包含错误更新的事务,就只能重新回到重新建表、重新插入数据这样繁琐的老路上了。由于可能会造成数据无法恢复的后果,请大家一定要注意。

4,rollback——取消处理

rollback 是取消事务包含的全部更新处理的结束指令。想当于文件处理中的放弃保存。一旦回滚,数据库就会恢复到事务开始之前的状态。通常回滚并不会像提交那样造成打鬼吗的数据损失。

如下, 表中的数据不会发生任何更新,因为事务未被提交,直接被回滚了

start transaction;-- 将运动T恤的销售单价降低1000
update shohin 
set hanbai_tanka = hanbai_tanka - 1000
where shohin_mei = '运动T恤';-- 将T恤的销售单价上浮1000
update shohin 
set hanbai_tanka = hanbai_tanka + 1000
where shohin_mei = 'T恤衫';rollback;

5,事务处理何时开始

几乎所有的数据库产品的事务都无需开始指令。这是因为大部分情况下,事务在数据库连接建立时就已经悄悄开始了,并不需要用户再明确发出开始指令。例如,oracle 数据库连接建立之后,第一条sql 语句执行的同时,事务就已经开始了。像这样不使用指令而悄悄开始事务的情况下,应该如何区分各个事务呢?通常会有如下两种情况。

A:每条sql语句就是一个事务(自动提交模式);

B: 直到用户执行commit或者rollback为止算做一个事务。

在默认使用B模式的oracle中,事务都是直到用户自己执行提交或者回滚指令才会结束。

自动提交的情况需要特别注意的是delete语句。如果不是自动提交,即使使用delete语句删除了数据表,也可以通过rollback命令取消该事务的处理,恢复表中的数据。但这仅限于明示开始事务,或者关闭自动提交的情况,如果不小心在自动模式下执行了delete操作,即使再回滚也无济于事了。

6, ACID 特性

DBMS的事务都遵循四种标准规格的约定。将这四种特性的首字母结合起来统称为ACID特性。这些约定是所有DBMS都必须遵守的规则。这些约定是所有DBMS都必须遵守的规则。

1)原子性(Atomicity)

原子性是指在事务结束时,其中所包含的更新处理要么全部执行,要么完全不执行的特性。例如前面示例中,运动T恤价格降低,T恤价格价格上涨,如果放在一个事务中处理,必须遵守运动T恤价格降低,T恤价格上涨这两个事情全部完成,或者这两个商品价格都不变。不可能出现运动T恤价格改变(commit),但是T恤价格没有变动(rollback)的情况。

2)一致性(Consistency)

一致性指的是事务中包含的处理,要满足数据库提前设置的约束,如主键约束或者not null 约束等。例如,设置了not null 约束的列是不能更新为null的,试图插入违反主键约束的记录就会出错,无法执行,对事务来说,这些不合法的sql会被回滚。也就是说这些sql处理会被取消,不会执行。

一致性也称为完整性。

3) 隔离性(Isolation)

隔离性指的是保证不同事务之间互不干扰的特性。该特性保证了事务之间不会互相嵌套。此外,在某个事务中进行的更改,在该事务结束之前,对其他事务而言是不可见的。因此,即使某个事务向表中添加了记录,在没有提交之前,其他事务是看不到新添加的记录的。

4)持久性(Durability)

持久性也可以称为耐久性,指的是事务(不论是提交还是会滚)一旦结束,DBMS会保证该时点的数据状态得以保存的稳定性。即使由于系统故障导致数据丢失,数据库也一定能通过某种手段进行恢复。

如果不能保证持久性,即使是正常提交结束的事务,一旦发生了系统故障,就会导致数据丢失,一切都需要从头再来的后果。

保证持久性的方法根据实现的不同而不同,其中最常见的就是将事务的执行记录保存到硬盘等存储介质中(该执行记录称为日志)。当发生故障时,可以通过日志恢复到故障发生前的状态。

相关文章:

SQL 语句继续学习之记录三

一&#xff0c;数据的插入&#xff08;insert 语句的使用方法&#xff09; 使用insert语句可以向表中插入数据(行)。原则上&#xff0c;insert语句每次执行一行数据的插入。 列名和值用逗号隔开&#xff0c;分别扩在&#xff08;&#xff09;内&#xff0c;这种形式称为清单。…...

Nexus仓库介绍以及maven deploy配置

一 、Nexus仓库介绍 首先介绍一下Nexus的四个仓库的结构&#xff1a; maven-central 代理仓库&#xff0c;代理了maven的中央仓库&#xff1a;https://repo1.maven.org/maven2/&#xff1b; maven-public 仓库组&#xff0c;另外三个仓库都归属于这个组&#xff0c;所以我们的…...

A Survey on Knowledge-Enhanced Pre-trained Language Models

摘要 自然语言处理(NLP)已经通过使用BERT等预训练语言模型(plm)发生了革命性的变化。尽管几乎在每个NLP任务中都创造了新的记录,但plm仍然面临许多挑战,包括可解释性差,推理能力弱,以及在应用于下游任务时需要大量昂贵的注释数据。通过将外部知识集成到plm中,知识增强预训…...

SQL求解用户连续登录天数

数据分析面试过程中&#xff0c;一般都逃不掉对SQL的考察&#xff0c;可能是笔试的形式&#xff0c;也可能是面试过程中面试官当场提问&#xff0c;当场在纸上写出&#xff0c;或者简单说一下逻辑。 今天&#xff0c;就来分享一道面试中常常被问到的一类SQL问题&#xff1a;连…...

掌握逻辑漏洞复现技术,保护您的数字环境

环境准备 这篇文章旨在用于网络安全学习&#xff0c;请勿进行任何非法行为&#xff0c;否则后果自负。 1、支付逻辑漏洞 攻击相关介绍 介绍&#xff1a; 支付逻辑漏洞是指攻击者利用支付系统的漏洞&#xff0c;突破系统的限制&#xff0c;完成非法的支付操作。攻击者可以采…...

windows系统服务器在不解锁屏幕不输入密码的前提下,电脑通电开机启动程序。

在控制面板中找到“管理工具”中的 “任务计划程序”&#xff0c;打开“任务计划程序”窗口。如图&#xff1a; 双击打开任务计划程序&#xff0c;空白出右键创建基本任务&#xff0c;或者点击最右侧的创建基本任务。 输入名称&#xff0c;点击下一步。 先选择计算机启动时&a…...

spring cloud seata集成

目录 一、seata使用场景 二、seata组成 三、seata服务端搭建 四、客户端使用seata 4.1 客户端增加undo_log表 4.2 客户端增加seata相关配置 4.3 客户端使用注解 五、测试 一、seata使用场景 微服务中&#xff0c;一个业务涉及到多个微服务系统&#xff0c;每个微服务…...

HTTP 常⻅的状态码有哪些,以及适⽤场景

⼀、HTTP状态码 HT T P 状态码&#xff08; HT T P S t a t u s Co d e &#xff09;是⽤来表示⽹⻚服务器超⽂本传输协议响应状态的 3 位数字代 码。它由 RFC 2 6 1 6 规范定义&#xff0c;并得到 RFC 2 5 1 8 、 RFC 2 8 1 7 、 RFC 2 2 9 5 、 RFC 2 7 7 4 与 RFC 4 9 1 8…...

后端给前端传参数忽略空属性

JsonInclude JsonInclude注解用于指定在对象序列化为JSON字符串时&#xff0c;哪些属性应该被包含进去&#xff0c;哪些属性应该被忽略掉。 JsonInclude注解有以下几个常用选项&#xff1a; JsonInclude(JsonInclude.Include.NON_NULL)&#xff1a;表示只有属性值不为null的属…...

SPSS教程:如何绘制带误差的折线图

SPSS教程&#xff1a;如何绘制带误差的折线图 1、问题与数据 研究者想研究45-65岁健康男性中&#xff0c;静坐时长和血胆固醇水平的关系&#xff0c;故招募100名研究对象询问其每天静坐时长&#xff08;time&#xff09;&#xff0c;并检测其血液中胆固醇水平&#xff08;cho…...

积分商城小程序如何精细化运营

随着移动互联网的发展&#xff0c;积分商城小程序成为了企业私域营销的重要组成部分。通过积分商城&#xff0c;企业可以激励用户参与、增加用户粘性&#xff0c;实现更好的用户互动和忠诚度提升。然而&#xff0c;要取得成功&#xff0c;积分商城小程序需要经过精细化的运营。…...

企业网络日志管理:EventLog Analyzer的卓越之处

企业网络日志管理对于维护网络安全、监控系统性能和合规性非常重要。随着网络规模和复杂性的增加&#xff0c;管理日志变得越来越具有挑战性。幸运的是&#xff0c;有一些优秀的工具可以帮助企业实现高效的日志管理。其中一款值得一提的工具是EventLog Analyzer。 一、EventLo…...

Python算法——滑动窗口问题

关于滑动窗口的概念&#xff0c;请自行到网上搜索相关资料&#xff0c;了解清楚再看本博客。 一、子组数最大平均数 LeetCode 第643题&#xff1a;https://leetcode.cn/problems/maximum-average-subarray-i/ 给你一个由 n 个元素组成的整数数组 nums 和一个整数 k 。 请你…...

使用 MATLAB 和 Simulink 对雷达系统进行建模和仿真

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…...

Linux 中的 sysctl 命令及示例

介绍 Linux管理员使用该命令在运行时sysctl读取或修改内核参数。无需重新启动即可实时控制和修改网络、 I/O 操作和内存管理设置的选项对于高可用性系统至关重要。 了解如何使用该sysctl命令及其选项来动态调整系统性能。...

Mybatis批量更新数据及其优化

需求场景&#xff1a;定时任务中&#xff0c;从其他平台同步数据&#xff0c;并更新当前平台数据库&#xff0c;表数据3W&#xff0c;分批更新某个字段&#xff0c;耗时巨大&#xff0c;约30min&#xff0c;尝试性能优化。 批量更新的几种常见方式&#xff1a; 1.foreach 循环…...

包含文心一言在内的首批国产大模型 全面开放

8月31起&#xff0c;国内 11 家通过《生成式人工智能服务管理暂行办法》备案的 AI 大模型产品将陆续上线&#xff0c;面向全社会开放。北京 5 家大模型产品分别是百度的 “文心一言”、抖音的 “云雀”、百川智能的 “百川大模型”、清华系 AI 公司智谱华章旗下的 “智谱清言”…...

Linux运维工程师面试题集锦

Linux运维工程师面试题集锦 一、Linux基础问题1.1 Linux的几个常用命令有哪些?1.2 Linux如何查看当前系统版本?1.3 Linux系统的文件权限有哪些?1.4 Linux如何修改文件权限?1.5 如何在Linux系统中查看文件内容?1.6 Linux的发行版本有哪些?1.7 Linux的文件系统是什么样子的…...

深度学习——感受野以及与图像修复的问题

在CNN中&#xff0c;决定某一层输出结果中一个元素所对应的输入层的区域大小被称作感受野&#xff08;receptive field&#xff09;&#xff0c;指的是神经网络中一个神经元可以感知到的区域&#xff0c;在CNN中&#xff0c;即 上某个元素的计算受输入图像上影响的区域&#xf…...

微服务容错 Resilience4j 接口服务-容错原理

微服务容错 Resilience4j 容错原理 4.1 微服务容错简介 在⾼并发访问下&#xff0c;⽐如天猫双11&#xff0c;流量持续不断的涌⼊&#xff0c;服务之间的相互调⽤频率突然增加&#xff0c;引发系统负载过⾼&#xff0c;这时系统所依赖的服务的稳定性对系统的影响⾮常⼤&#…...

OceanBase 4.x改装:另一种全链路追踪的尝试

本文作者&#xff1a;夏克 OceanBase 社区文档贡献者&#xff0c;曾多次参与 OceanBase 技术征文比赛&#xff0c;获得优秀名次。从事金融行业核心系统设计开发工作多年&#xff0c;服务于某交易所子公司&#xff0c;现阶段负责国产数据库调研。 本文为 OceanBase 第七期技术征…...

springCloudAlibaba详解

一、概述 1、简介 Spring Cloud Alibaba&#xff0c;它是由一些阿里巴巴的开源组件和云产品组成的。这个项目的目的是为了给Java开发者带来使用 Spring Boot 和 Spring Cloud 的更多便利。 Spring Cloud Alibaba 致力于 提供微服务开发的一站式解决方案。该项目包含开发分布…...

python通过docker打包执行

背景 正常情况下,python脚本执行需要安装有python环境,那python环境虽然也可以通过移植的方法来安装,那总归是比较麻烦的,下面通过docker打包的方式来执行python脚本 1、安装python镜像 准备两个文件即可,dockerfile、requirements.txt两个文件的内容分别如下 同目录下…...

实现公网远程访问:Windows本地快速搭建SFTP文件服务器并配置端口映射

文章目录 1. 搭建SFTP服务器1.1 下载 freesshd服务器软件1.3 启动SFTP服务1.4 添加用户1.5 保存所有配置 2 安装SFTP客户端FileZilla测试2.1 配置一个本地SFTP站点2.2 内网连接测试成功 3 使用cpolar内网穿透3.1 创建SFTP隧道3.2 查看在线隧道列表 4. 使用SFTP客户端&#xff0…...

获取文件路径

String fName " D:\\C#_Source\\test\\uploadFile\\test.xlsx";// 方法一&#xff1a; File tempFile new File( fName.trim());String fileName tempFile.getName();System.out.println("fileName " fileName);// 方法二&#xff1a; String fName …...

如何自己实现一个丝滑的流程图绘制工具(八) 创建节点的文本标签

背景 节点的文本标签不希望是通过节点编辑实现&#xff0c;而是拿到节点名字渲染上去&#xff0c;包括连接线 createLabel(element, name, parent) {const modeling this.bpmnModeler.get(modeling)let labelCenter {}// 连接线上的标签if (element.type bpmn:SequenceFlo…...

Spring Boot多数据源配置运行报错:No operations allowed after connection closed连接异常的解决

上一篇文章我们讲了如何配置多数据源&#xff0c;但是配置在使用一段时间之后&#xff0c;查询数据库会发生报错&#xff1a;No operations allowed after connection closed。 一、问题原因&#xff1a; 经过排查发现是因为MySQL5.0以后针对超长时间DB连接做了一个处理&#…...

3、QT 的基础控件的使用

一、qFileDialog 文件窗体 Header: #include <QFileDialog> qmake: QT widgets Inherits: QDialog静态函数接口&#xff1a; void Widget::on_pushButton_clicked() {//获取单个文件的路径名QString filename QFileDialog :: getOpenFileName(this, tr("Open Fi…...

爬虫逆向实战(二十六)--某某学堂登录

一、数据接口分析 主页地址&#xff1a;某某学堂 1、抓包 通过抓包可以发现数据接口是Account/LoginPost 2、判断是否有加密参数 请求参数是否加密&#xff1f; 通过查看“载荷”模块可以发现pass是加密参数 请求头是否加密&#xff1f; 无响应是否加密&#xff1f; 无co…...

leetcode分类刷题:哈希表(Hash Table)(四、前缀和 处理连续子数组)

1、leetcode题目里对于元素加和的考察可谓是屡见不鲜&#xff0c;包括 简单的限定一个有效答案的两个或多个元素求和leetcode分类刷题&#xff1a;哈希表&#xff08;Hash Table&#xff09;&#xff08;一、简单的两数之和&#xff09;、在有序数组内对加和等于target的三元组…...