00:00
来,咱们接下来咱们看一看增产改查。增删改我们都说了,就这个茶是不是我们看一下这个茶啊,写完这个茶之后呢,我们讲完这个之后呢,我们就换工具了啊。T05,他这个代码啊,都是重复的代码。啊,所以说呢,你不用太担心啊,说这个东西怎么办怎么办是吧。Test。那这块呢,咱们处理这个查询结果集,但是这个步骤还是该写还得写啊,注册驱动啊,获取连接,你看又来一遍,是不是要获取数据库,或者获取数据库操作对象,然后第四步是执行circle语句,然后第五步呢,就是处理查询结果集,第六步就是释放资源了,是不是?哎,上来那行了,那代码格式呗,对吧,先大架子,你看说的太好了啊,大架子谁S吧,关于那还是谁啊,哎,这次结果集多了一个。
01:33
多了一个啊各位,多了一个Java,除了这个在还有一个result set。这就是结果基因。啊,这是结果期,各位什么。就是你将来执行查询语句,查询之后的结果自动就封装到哪个对象里边了,这个对象结果及对象里边了。
02:03
啊,所以在关闭的时候,我们先关哪个,先关这个,再关谁他再关谁他。因为获取的时候的顺序是什么呀,先获取连接,通过连接去拿数据库操作对象,有了数据库操作对象,他去执行搜后语句才有结果集,听懂了吧,所以呢,关闭的时候呢,先关这个,再关这个,再关这个啊那行了,那这边搭架咱咱们赶紧的啊,把这个架子答应了,Circle也直接得了,好来少写点啊翻下来呗,是吧,好,那这块呢,咱们就把这个相应的步骤咱们拿过来,这个拿过来放哪啊,放上面呗。是不是,然后下面这个呢,释放资源,我们拿过来放这。那注册驱动咱们应该是没啥问题了啊class.four name是不是我们这写死了啊各位写死不是一种好的习惯是不是?哎,但是呢,这边我就是比较懒啊like for就写死了咋的是不是来connection等于什么driver manager,第2GET什么connection啊,该写的三个参数还得写上吧啊GDBC,你这个东西呢,你最好写一下啊,有个印象logo冒号,什么3306,然后北京动力节点,然后root账号,然后密码是123333啊好,那行了,获取数据库操作对象等于什么connection点什么create,什么statement啊现在你是不是这个代码虽然你还没有写,是不是基本上也有有点印象了吧?啊来搜狗吧,来搜怎么写这个s select吧,P number en name s行没有from行吗?看是不是很简单的一台,搜索语句很简单啊,处理查询结尾机还没有执行,诶注意听啊,就是这就。
03:57
就这啊,这个位置是不是有结果集,结果集等于什么statement啊,这个statement是不是专门用它去执行搜索语句啊,哎,还能调这个方法吗?
04:08
这个是执行什么增生改。大家还记不记得这个括号里边只能跟什么insert语句啊,Delete语句啊,还有什么这个update语句是不是,哎变了啊,变了变了变了变了变了,哎变了啊,这块有个方法变了叫做query。专门执行什么语句的查询语句。Javaco叫有个方法叫什么?Execute query。就这。执行给定的什么SQL语句,该语句返回单个什么对象,Result set对象。对吧,要发送给数据库的时候,语句这就是这个参数吧,通常为静态的circle,什么语句select。
05:07
能看懂吧,所以这个方法就XQ宽语呢,表示专门执行什么,专门执行DQL的语的方法,DQ语句的方法,Execu query啊把思传进来,发问结果集,那这个结果集再往下到第五步就是处理查询结果集了,我们最主要讲的是不是就这步了,但这个方法你要注意啊。我觉得我我得再交代交代啊,因为有很多同学就就就整个整整差劈了啊,来这块怎么办,Third delete或什么update execute query这块。这个返回值返回什么?Int这个返回值返回什么?查询语句返回结果及增删改返回数量。
06:03
删了几条,加了几条,改了几条嘛。那返回结果集之后,我们处理结果集,在处理结果集之前我们先关闭吧,如果说结果集怎么着不等于空的话,我们把结果集给它close吧,Close啊RS.close我们一个就是在我这,但是呢,你你必须在这个环节能把代码给我背会啊,这是我希望你们能够做到的,我呢,只能在这去用这种破文子变器的人EE1顿写是吧,怼的手指头疼。真的真的是这样啊,来,把这个拿过来,你要知道我的这个用意啊,我的用意是说我一个字母一个字母敲出来,不提醒我是希望你课堂上你把这个代码给我记住,这是我的目的啊,来statement,你能把这玩意记住呢,你就尽量记住它啊,别让我这个这个d plus在这敲半天啊,你不知道我的用意是在干啥啊,好,那这块呢,咱们把这个。
07:13
把这个该导进导进来啊port,嗯,再往下呢,咱们这个处理查询结果集,我得画图了。我得画图了啊这个东西。就这个搜狗语句,他查完之后长什么样子,我觉得得好好的再看一下。他这条语句啊,他执行结束之后,就是这样一个结果集。是这样啊。对,现在整个这块各位整个这块啊。这个我可以怎么着啊,删掉它不要了。
08:00
或者往上挪一挪,不管了不管了啊,来整个这个对象,我们叫什么对象set这个。代表的就是这这堆数据。听懂了吗?啊,这数据里边是不是有一行一行的,你看这一行吗。哎,又一行。是不是,哎,有,我觉得你们现在啊,应该能够感觉到,要想拿这个里边的数据需要循环。我觉得这个你这应该是属于目前来说属于基本的编程素养了啊,就是这个数据啊,应该是采用一种循环的方式,一行一行一行一行干什么呀,给它拿出来。你得猜啊,是不是得猜测一下,猜测一下。你不能总说我讲出来,你你你你你讲到这你才能想得到,就是再往下这个数据,你要一个一个给他拿出来,你怎么拿。对吧,他有行有列,你怎么去拿这个数据。
09:08
对吧,那你怎么去拿这个数据。那么这个时候呢?我们就得看谁了,帮助文档了。哎,有同学老师这个不是集合吗。不是。不是你们之前学的那个加法点U求啊,什么哈希呀是吧,什么赛呀,什么哈西赛呀,不是这个啊,别往这想,别往这儿想啊,别往这想,但是差不多差不多只能说近似啊,返回一个结果集,那处理查询结果集这块呢,咱们怎么处理呢?大家看Java circle啊,还是这个包,这个包下有个result set,这个result set查询结果集,这个结果集现在封装的这个数据就是这个数据。就是这个数据,好了,接下来我们一块来看看他这个帮助文档,这个result set里边有一个方法,我直接告诉大家啊,叫什么叫奈斯特。
10:06
就这个。那的这个方法将光标从当前位置向前移一行,并且返回布尔类型,我们点过去,他说呀,返回值很有意思,如果新的当前行有效返回值就是true,如果不存在下一行,这个方法就会返回false,能看懂吗?好,那我现在想说的是最初的时候光标指向谁,光标指向这个位置,各位。听懂了吧,光标指向这儿。这个光标就在哪个对象里边,这个对象里边。这光标对象啊,你就理解成是光标对象最初位置是在这个位置,明白接下来你会调用光标对象的什么方法。
11:14
RS.next。这个方法各位。这个方法只要一调用,它就会让你这个光标干什么,向下移动一行,或者叫向前移动一行。明白,他之所以光标能走到,这是因为你调用了结果及对象的一个方法,叫next,这个方法只要一调用,它就会往下走一行,走到这听清楚,听清楚,如果走到了这个位置上有数据。这个方法的返回值就是处。
12:01
为什么这个方法返回处啊,因为它指向的这个位置有数据。接下来你的任务是什么?把这个数据取出来,再把它取出来。再把它取出来吧。是不是好取出来之后再去调用的方法。懂吗?再调用RS点,耐克斯特调完之后呢,它仍然去给他返回什么返回处,为什么?因为它光标指向的这一行仍然还是有数据。直到光标到这个位置上。不是,还是r.net执行这个之后返回的结果还是。
13:04
接下来你的任务是干啥呀?把这个数据取出来。明白吧,哎,你需要把这个数据取出来,再把这个数据取出来,再把这个数据取出来,接下来你还会再往下继续调用什么。RS.next在调用的时候,你指向的这个位置是这个位置。那指向的这个位置没有数据,各位没有数据的时候,这个方法呀,它就会返回什么false行没有数据。那根据我所讲的这个原理,大家思考一下,我们这个开发写这个代码应该怎么写?应该用一个while循环保存一下,放到这个位置上,然后呢,我们选中它,我们写上这叫便利,什么便利结果机。
14:03
所以这个时候呢,我们这个代码应该怎么写啊,RS是不是它点什么耐克斯特返回,诶不是返回啊返他返回一个不玩类型。对吧,哎,我们就叫FLAG1吧,诶这个RS最初的时候,它光标指向的没有任何数据啊,指向是最上方的,它调用next只能说明他现在指向了第几行,第一行数据,第一行数据有没有数据啊,你输出一下看看它有没有数据,如果为数就代表什么有数据啊来。那接下来我们把这个重新编译一下。为true,这个结果为true啊,就代表是不是有数据,有数据,如果你你最好加个if啊,If什么if为针,哎,如果这个为为为针你懂吧,哎,就代表什么有光标,光标指向的行有没有数据指向的行有数据,各位有数据取数据吧,取数据。
15:22
取。怎么取?就到哪了,各位告诉我到哪了,现在是不是取这个,再取这个,再取这个吧,好,那么接下来我先告诉大家啊,怎么取,通过结果集的一个方法。结果就有一个GA的方法。注意听啊。有一个get string方法,注意get string方法的特点是什?方法的特点是么?不管数据库中的数据类型是什么,都以此的形式取出。
16:14
听懂了吗?就我不管你数据库里边是差瓦叉,Int big int,总之我给你取出来的就是啥字符串形式,这个方法的返回值当然是什么类型论。听懂了吗?好,而且我现在告诉你这个位置跟的是下标。一就代表第几列?第一列、第二列、第三列。听明白了吗?非常之简单,注意JDBC中所有下标从一开始,不是从零开始。各位,这件事我提前给你打招呼。第二列是什么?第二列是员工的名字。
17:04
第二列是不是,第三列是工资吗,工资。输出吧,好变异。我们现在只能取出第几行数据。第一行。如果你想取出第二行数据怎么做?把这个代码复制一下,继续调RS的什么ne光标往下是不是会走一行?如果还是true OK,这个代码是不是需要再走一遍?代码需不需要改,还是第几列?第一列,第二列和第三列,只不过就是这个七四九九一千六。听懂了吗?这个123说的是什么?第几列?
18:07
听懂了吗?以下程序的一、二、三说的是第几列?再编译,再执行第二列,是不是有了您这个代码不可能这样写,这样写就累死了,如果有100行,你这个代码要写100个吗?所以说您这个代码必须得升级的各位,因为我们学过循环Y,要循环os.ne如果我问大家这个条件如果为true。是不是代表光标指向的行有数据,有数据取数据是不是还是这个代码,这是不是就写完了。
19:01
还需要定义变量吗?还需要衣服吗?不需要,这个位置直接它的执行结果就是什么不玩类。RS.ne的这个方法,它返回错误就代表有数据啊,光标指向那行有数据啊,如果他调这个RS.ne的这个方法,最后它返回的是false false的意思表示它指向的位置没数据,没数据自然这个循环体就不用执行了。听懂了吧?好,那只有有数据才会执行,所以RS.ne有数据我们就执行来,接下来我们再编译Java c编译加Y运行。你有100行,1万行,我都能给你弄出来啊。听懂了吗?好,各位,这个重要吗?非常重要非常重要,各位除了这个之外,好消息啊,好消息来注意看啊,这种方式之外,我告诉你这个位置不一定非得跟123。
20:04
你还可以跟列名,你可以把它搞成什么,搞成这个。哪个健壮?写列的名字见状还是写数字见状?注意这种方式写123不见状,你二现在取出的是一内,如果我这条思路在查的时候,我把这个字段的顺序调个个。你下面这个程序是不是就不健壮啊,所以这个我们建议你不要用列,听懂了吧,用列名。好,接下来我们再来编译加2C,编译加运行结果完全相同。好,各位看好了啊,注意听了这个不是以什么。列的什么下标?获取以什么列的什么名字获取。
21:02
听懂了吧?好,是这样吗?我把E重命名,A重命名,还记得吗?重命名,各位你告诉我这个列现在的名字是不是已经叫A了,所以您这个位置应该写的是这个还是A。也就是说,我想说的是,这个方法的这个参数到底是表中的列名,还是你查询结果的列名?编译一下运行报错了,说这个根本不存在,这个根本不存在,听懂了吧,这个不行了啊变成啥A听懂了吗?接下来再编译再运行才能查出结果。咱学东西要学的彻底一点。
22:00
听清楚,这个括号里边填的是列的下标,从一开始这个位置填的是您查询语句的最终查询结果的列名称,您这个艾重命名之后,您这个位置必须得写重命名之后的这个名字才有效,你写原先这个根本不存在,其实这个设计的也是合理的,为什么?因为毕竟我调的是哪个对象的方法RSRS是谁是他,它是谁,他是他,他是谁,是执行你这条思Q语句的结果集,对吧?你执行这条思QL语句的结果集,你执行的这条SQL语句最后是不是就是A?是不是就是A还有那个EP number吗?没了,听懂了吗?所以这块呢,咱们要注意啊,这块呢,我再我再重点注意啊,重点注意什么呢?就是说这个列名称不是表中的列名称,是查询结果集的什么列名成还没讲完,还没讲完,注意听啊,注意听好,我们除了get string这个方法之外,有没有同学能想象到,如果我想以int类型,我想以double类型取出数据的话,我如果是想in的类型取出的话,你应该能猜到这个方法是什么,Get in,如果你想以double诶类型取出这个数据的话,你这个地方应该调哪个方法呀?叫get什么double,听懂了吧?来get in get double有个好处什么好处double类型的数据可以直接做数学运算,每一个人涨100块钱。
23:38
来来,接下来我们把这个呢,给它括起来,能看懂吧,接下来我们看史密斯啊,它就变成900了,Java c编译加va运行,大家看是不是900啊,诶也就是说,记住啊,咱们除了可以以字符串的形式取出之外,还可以以特定类型取出,听懂了吗?哎,除了可以以什么呀,以死润类型取出之外,还可以以什么特定的类型取出,但是您适可而止,适可而止,这个位置能get吗?不行,因为员工的名字根本就不是一个数字,您要叫get,根本就没有办法把它转换成数字,听懂了吧?所以这块还得还得看情况啊,还得看情况啊,你不能随便写啊,这个之所以可以get in的原因是因为你人家这个员工编号在我们底层数据库当中,它是一个什么类型,Int类型,这个之所以可以用double,是因为它底层是double类型,听懂了吗?所以这个。
24:38
问问大家能不能再换成另外一种写法,这个位置写什么A行不行?这个位置写什么以内行不行?这个位置写什么salary好,也就是说除了下标的这种方式,我们能不能以列的名字取出行不行啊?诶,这不是吗?来加二呗啊接下来我们再编一下Java c编译Java运行,大家看现在这个数据是不是就是1万呃,1000了。
25:03
42哈。能不能看懂,好便利,结果已经讲完了,各位啊,一共几种情况?45要么以什么顿。要么你什么。指定类型。要么以什么下标,要么以什么列名,好学吧,好学啊,While循环套起来,在这里边一顿get就行了。对,一顿盖就盖它呀,你温氧循环啊,套起来啊,这里面一顿盖就完盖盖盖盖它就完事了,就取出来了。记规则。记规则啊。行了,那今那这个呢,咱们就便利结果集这块,这是便利结果集啊,叫便利结果集,各位咱们就讲到这吧。
我来说两句