00:00
好,首先下午的第一个功能呢,咱们写一个登录啊,模拟一个登录。测试。Logging。叫test。第四个。按方法来着。啊,想要写登录的话,首先这个这个就得输入账号,输入密码啊。所以它有这个输入还记得吧。是吧?M。好,请输入账号。请输入。账号。来一个请输入。你啊。然后账号咱就叫no了,好吧,input.next。密码。
01:00
PWD。OK,然后这个嗯,别换行。看一下效果。他长这样。对吧,然后一回车紧跟着下边,如果登录成功的话。呃,咱们显示啥欢迎你尊敬的谁谁谁是吧,如果不成功的话就快滚一边去啊好,咱们应该怎么写一下这个功能呢?好,首先确定你账号密码在哪张表去匹配啊,咱很明显是不是就student学号作为账号密码,就是这个密码。对吧,然后如果成功的话,给我打印出欢迎你尊敬的金蝶。对吧,如果我用这个账号这个密码的话,就是欢迎你尊贵的赵谦。好吧。好了来,那这个词口语句咱们应该怎么去写呢?十拉个星,嗯。Student条件是学号等于一个值,并且是不是密码也要等于一个值啊,Log p WD等于第二个值。
02:06
是不是这么搞?哎,就这么搞。然后其实它这块返回的是不是只返回这个名就可以了。所以这块直接就是。对吧,之前讲四口语句的时候说过,能返回具体的列就尽量不要使用这个星。对吧。好了,那就是这个思考语句。就是他。简单的测一下。账号天呢。照片的密码为。执行。是不是赵琪啊,如果密码错了。有没有啊?好了,三口有句粘过来吧。养成一个习惯哈,在写这个东西的时候,先把四口语句啊,在咱们这个透的里边先运行成功。然后成功之后考米过来。
03:01
定义命令。这样我是不是能够保证我的SQ语句是100%没问题的?啊,要不然的话,你如果在这硬写的话,你也不知道你写那个玩意儿对不对,到时候报了一篇错,你还得挨个字母去看。是这意思吧?好了,然后呢,在这个位置。这个位置。这个是不是那个账号啊。也就是咱们所谓的no。好了。还有哎呀变量啊。是不是no啊在这。然后最后这个是密码。你要拼在这PWD。OK吧?三号语句定义好了,紧跟着要干什么了?是不是开始正常的逻辑了,开始走了吧,这个什么获得连接啊。你没发现啊,看我代码啊。
04:01
呃,测试连接在这儿呢,然后呢,我添加的时候连接这么写的。对吧,我查询的时候链接还是这么写的。然后呢,接下来我登录的时候,你说连接会不会变样。还是那样吗?也就是说我每一个操作所获得的连接代码是不是一直就这样啊。那我何必写一遍呢?我把它封装成一个方法调一下,是不是方便很多呀?好嘞,接下来我就要封装一个类。这样一个类,咱这个类呢,就叫DB。数据库嘛,DB类,然后它放在什么包里呢?我认为这个DB类啊,里边就装一个获得连接的方法,所以我叫他工具。哎,Tools工具哈。建了一个包,然后在这个包里边儿呢,建了一个DB类,这个DB类干嘛。
05:00
一个方一个方法。啊,提供呃,获得连接数据库。连接对象。好吧,我要封装这一个方法了。Public g连接。然后是把之前的代码往这里放就可以了。好看着啊,把之前的代码就不写一遍了,一模一样的啊。拉过来。好,这块是怎么着。为啥报错?异常吧,哎,这个异常呢,在这块我就不需要抛了,为啥嘞。我之前抛往这块要抛目的是什么?目的是让大家看着这个清晰的结构,OK,如果真实的代码里边。不要抛啊,能在这处理的你就给他踹开处理掉行吧,好了,把它这两句话是不是也踹开去啊?
06:03
打不开。开了首先啊,想按这个这个这个拆开这个快捷键啊,你必须得保证一件事。保证你即将捕获的这两段代码中不会出现编译的错误。换句话啥就是这两句代码,除了拆开没加,这两句代码必须是一点错没有,你才能运用快捷键,否则运用不出来。明白啥意思吧?好了,如果这样的话,其实怎么验证也很好验证,你鼠标拿上来是不是告诉你开始啊。这句话呢,是不是也是这样的才开始提示啊,好,把这两句话选中。然后。快捷键其实就是这个啊。我这分辨率改的这么小都看不全啊。盖住了。就上面这个,我现在不是这个local history吗?上一个选项看到了吗。
07:02
的位置看到了吧,上面那个,然后你看后边什么快捷键。All the shift OK就摁它。明白了吧?看着啊,把它们选中。然后就是out shift加Z,换出这个菜单来。然后按下箭头看到了吗。看着我的光标移动了吗?来,再来一遍。Out shift z下箭头就是第一个。然后回车就加上了。还得慢慢练啊。告诉大家。选中。选中要补获益。补货。异常的代码。快捷键为选中,必须得先选中啊。然后是out加shift加Z。
08:00
然后向下箭头。向下。向下一个是吧。啊,按一下向下按一下下吧,摁。向下。就选中了,然后回车。这个一会儿在做练习的时候,自己摁两下啊。多运用就会了。好了,然后呢,我这个方法是不是已经封装完毕了。哎,代码呢,我是完全copy过来的,肯定是不会没肯定没问题。那现在呢,大家看啊。上了。我想要登录的话。想要登录的话,我下一步该干什么了?连接对象呢,我已经通过这个方法,已经有了我现在写的假代码啊,就伪代码。可能会报错,你先甭管他好吧。是不是通过这个方法我能够获得连接对象啦,然后呢,连接对象是不是就开始。什么啦?
09:01
是不是这个意思啊?哎,那么以下代码咱们等会再往后写,现在先把这句话搞定,先把这句话搞定,我如何获得这个,通过这个方法获得连接对象。也就是说我在这里边,我在咱们这个类里边,我怎么调DB类中的get con。零六是吧。这溜一个,那溜一个,烦不烦啊?这你一个,那你一个对象越来越多是吧。哎。简单的方式是什么呀?静态是吗?哎,静态是不在内存地址中是唯一的呀。哎,这个方法不错哈,静态是不错的。怎么了?是吧?Sta好了,调用这个get,那就这块怎么写啊,叫DB类,点get它。
10:04
是吧?那这个方法你看一下相当于掉这里了,我这个方法呢,没有返回值。OK,没有返回值。而你前面这块是不是得用个C来接呀。其实你看我怎么做的啊,看好了。我需要这个静态,这个静态无所谓啊。如果是我做这一块的话,我会这么去解决。我会把con这个对象啊,我给它提取到成员变量上。初始化为空。然后下边这一块呢,就直接是负值就好,看懂了吗?这块。OK。然后我怎么得到这个C对象呢?看着啊,我首先。我首先你看你想啊。在Java体系中如何无条件调用一个类中的成员变量?我是不是把DB类继承过来呀?
11:05
一继承的话,我这个对象我能不能用到了。能了吧。OK。是不是继承啊。哎,要我写的话,这么写继承一下。比你对象好多了哈。好了,那继承之后啊,首先啊,这段代码呢,仍然要执行一遍,那你看这个方法对这个类来说是不是公开的呀。那他也就是说这个是你父亲,这个是你父亲向你敞开的钱包。你是不是随便上里边就掏啊。对吧,教一下这个方法呗。你看怎么调啊。直接调就行了呗。抱错来。这块镜太恶心。慢方法恶心呢,这块因为他是静慢慢方法嘛,所以他是静态,下边还得叫静态是吧。
12:01
这个讨厌了啊,这个讨厌了。那么咱们就不给他写在慢方法里,正常的登录是不是也应该封装一个特殊的方法呀?干掉,再见吧,慢风花。Public VO这个方法。咋写贸易的?对不对。登录。这叫登录。行吧,哎,就叫登录。然后呢,你看我调了一下这个方法,调了一下这个方法,然后这个方法调的目的是什么?拿对连接给了con。对吧。好了,那这个con一开始是空,经过这个方法之后,这个里边还是空啊。不是是给时的吗?对吧,好了,那我这块接下来就这么做就行了啊,不是一个包内啊,不是一个包内,它是默认的权限啊,给他来个公开吧。好了,这块呢,它就需要拆开了。
13:02
串上啊。好了,那咱们这句话。或者连接。哎,通过这句代码,咱们就已经获得链接了。然后紧接着这个东西干嘛呢,这是。对吧。啊,一包。好,S7点直行。什么操作?这什么操作。查询,所以必须这块是什么呀。宽哈,S口语句扔进去,返回result。Salt。赛。引爆。接下来是不是就对2S进行循环就好了?但是呢,我这块查询的时候看这个结果。这个账号,这个密码如果匹配的话,是不是就返回一个名啊。是不是就一个名,它会返回一个张三李四王五多个名,不会吧?
14:02
所以呢,这块我根本就不需要循环啊。对吧,我只需要看你2S里边能不能拿到值是不是就行了,所以直接就是if判断。2S里边如果有值,则直接输出。欢迎你。尊敬的。叫啥名?对吧。否则。滚,是吧?好看。这个就是判断,如果有值哈。有职。啊,怎么说。如果有数据,则登录成功。是吧?然后这个名在这块咱们应该怎么获得到呢。上午说了。
15:01
通过RS对象是不是拿往出拿呀,明不是死类型吗。然后这里边儿是不是可以扔裂的。行列号就是第几列也可以扔列的名称嘛。OK。这里边扔列的名称呢,是不是都知道是不是内膜,扔这就行了,但是如果说你要扔这个这个这个第几列的话,你应该写几呢。好,记住了啊,这块我特意这么说了一句。你看啊,这块扔第几列,并不是说看你表中这个列是第几个,而是你这个SQ语句最终执行的结果中的第几列。啥意思呢,我这个circle语句。退回来。是这个密码吗?我这个SQ语句最终查询的是不是只有一列呀。所以你这一块必然就是你。
16:04
不可能写二。明白啥意思不?哎,就看你这个结果集会产回产生几列,然后这块写具体的第几列,OK好了,写到这儿的话,关闭资源,咱们暂时先偷个懒好吧,看一看我的程序有没有问题,执行执行个屁呀,慢方法让我干了。这能执行吗,是不是?好,我目的是不是就叫这个方法呀,那还不简单吧。另一个当前嘞,点老给。是不是这样的,是不是掉拉位了就行。账号,One two。肯定没这个账号密码吧。来找一个。十来个星。那就这个吧。嗯,重新运行账号是他太长了这个。
17:03
回车密码。OK。这样的话,我这个登录呢,就算是写完了。关键的是刚才我发现这个过程还可以,就是这个封装D类是不是有点懵了,我把这个方法呀,我把这个方法这个代码,这个这个方法里边的代码呢,是完全copy过来的哈。然后呢,提供了一个方法名。折上,你这么看就简单了。这个类里边干了吗?干了个什么事?声明了一个连接对象,声明了一个方法。注意啊。当声明的时候,它是一个空值。对吧。调用这个方法也是这么看。程序自上而下往下执行,执行到此时的时候,就这这句话的时候,在我的负类中,Con是不是还是空的呢?
18:00
然后我再执行这个方法,调用了父类中的这个方法,这个方法干啥使了,就是将。你刚才的空对象?复制了一个连接,OK。所以。这句话在这儿的时候,Con是空的,这句话执行完到这儿的时候,Con是不是就已经获得连接了?OK吧?然后呢,我怎么获得那个con呢,在这直接拿的。你鼠标放上来,你看这个单词,但这个单词跟别的单词不一样,它蓝色的吧。鼠标拿上来,看它是谁的类中的con呢?是D类的。也就是说,这个是我父类中的对象。OK,直接拿过来就行了。负类嘛,因为继承了,所以直接拿过来就用,然后呢,该怎么着怎么着,往下边一系列了。
19:02
最后这注意的是什么呢?RS这个杠一啊,有同学奇奇奇怪哈,我写个二。你快看看是什么错哈,去执行。没有啊,没有他进不来这个衣服啊,哎,好讨厌啊,这个账号密码还得重新来一遍。账号。给大家演示一下这个错哈。然后密码这呢。好,看到什么错了吗?无效的列索引不是索引列。就是无效的列号对吧,因为你的列一共就一列,你写个二是咋回事呢。是不是啊,所以只能选一啊。好了,这就是刚才我写的全部代码了。
我来说两句