00:00
呃,在之前的课程当中啊,我们已经通过我们的output form把我们的数据啊给它放到了我们的MY当中,这个是咱们已经做了做了的啊,那么光做还不行,因为有些细节呢,我们还没有去完成,比方说我们这里的二和三这个呢,我们之前讲过了,其实我们这里呢,完全可以直接把我们传递过来的数据给它保存好,是完全可以做到的,但是我们希望呢,数据库的数据不要存储的太多啊,不要太冗余,这样的话呢,我们在数据库当中呢,给它建立了一些我们的表,通过这些表呢,我们可以把这个数据呢变得简单一些啊,否则写太长了,而且都是重复性的数据,不是很好啊,所以这样的数据呢,我们一会儿呢,说把这个我们表结构啊数据发给大家啊,然后呢,我们这里呢,就通过我们查询,把这个数据库的表呢给他准备好,准备好了以后,当我去保存数据的时候,这个ID我就不要固定写死了,应该来自于我们真正的数据库的数据,所以啊,就需要在我们去做这些操作之前,要把它事先我们的数据呢给它查出来,保存起来。
01:00
来啊,是这样的,这样我们在这里咱们可以简单的做一下啊,来咱们写上一下啊,写上呃,我现在干嘛呢,叫读取啊,读取我们的数据啊,读取我们的用户啊和那个时间的数据,嗯,你读取以后把它保存起来,保存起来以后呢,在我下面的去使用它,那所以啊,我这里的事先我准备一下,准备一个临时保存的一个对象,那我们这里呢,要保存什么呢?因为大家想想我们这里得到这个电话号码和时间呢,我要把电话号码和时间要转换成他的那个组件。要把这个ID给他转,也就意味着我要把咱们当前的这个时间跟他做关联,把我的用户的他跟他做关联,那么我们一定要应该有有个什么东西啊。一定是不是应该有个映射关系啊,那这个映射关系的话,我们这该怎么做,我们这里是不是应该用一个map会好些啊,对不对,Map是不是PY有个映射关系啊,那所以呢,在我这里呢,就准备两个map啊,为什么呢,有两个操作,那第一个呢,我们写上map啊,咱们来咱们写上,嗯,我的目的很简单,要通过电话号码呢,把那个ID给它映射出来,来,所以我的理写上啊,咱们叫string,诶T第一个就是我的key,第二个就是我的value key就是那个电话号码,那么这个就是那个组件啊就这样,然后呢,把这个呢给它加上,加上以后呢,点击后面我们写上咱们叫嗯,URL啊,URL去了啊,咱们叫u map啊,等于我们的new哈希啊map,嗯。
02:30
好了,给它加上就可以了啊好,这是我们的第一个,再来一个啊,除了一个U的以外,还有个叫date啊,咱们叫date,这个date呢,它也是时间,再加上那个主件,这样的话呢,把两个map呢,先事先准备好,就类似于缓存的感觉啊,事先放到缓存当中,然后呢,我们这时候该读取数据了,那么读取数据的话,我们这里写个叫connection点,我们叫做什么呢?Prepare statement,然后上面写个circle文啊,等于circle文,这个circle文我的目的很简单,我们叫query u叫查询用户的蛇口纹,那么这里呢,就写上叫select。
03:06
记住我们这个表里面有tell,有name,其实我们这个name呢,暂时可以不需要,因为保存的时候是不用的,那么我这里这个T呢,我们需要的,所以呢,我们就写上叫select ID和那个我们的tell,然后from我的这个表的名字叫CT_U叫CT,咱们下划线我们U,然后我们这里没有任何的条件,就给全查就行了,我就是全需要啊,所以把它放过来,放过来以后,那我这里呢,我就直接把这个它放进去。好了,放进去以后,那这个时候呢,我们写上咱们叫prepare statement啊,然后来它等于诶然后呢,给它放到这边啊,给它个nu,嗯,连接对象啊,我们就不准备关它了,那么我们这个呢,给它稍微的来咱们操作一下咱们的cat,嗯,好,然后下面呢,有个finally,诶翻过来啊,然后呢,把这个呢,我们放到这里啊,它等于把这个呢放进来,嗯,好了,放进来以后,这里面我们给它一个我们的exception啊,给他个E就可以了,写完之后,那我在最后我们写上他if啊来如果我们的pro啊,我们的这个他,嗯,咱们的操作对象啊,如果它不等于,那诶给它关掉,嗯,咱们这里呢,直接来点我们的close啊好。
04:23
然后呢,给他来操作一下啊,嗯,行了,那我现在这个地方我是全查,也没有任何的条件,那我就直接来了啊,所以直接点我们叫excute query,这样的话,它会返回一个叫site啊,这个东西咱们就叫RS就行了啊来我们叫RS,等于它这个其实都是我们GDBC的一些相关操作啊。好,然后呢,把这个呢,我们的RS呢也放到外面去啊,最后呢,我们可以统一给它关掉啊,这都可以,然后等于一个nu啊好了,然后呢,我在下面这个地方啊,把这个放上面吧,嗯,放上面去啊,然后呢,我们这边关闭的顺序应该正好是相反的意思啊,我们写上叫RSRS,它如果不等于空不等于,那那么这里呢,我们2S给它close掉啊,关掉关掉以后这里呢,我们来写上一个它就可以了啊行了,那接下来我们现在的这个位置呢,我就可以直接来了,我就查询,那查询的话,我们要去看看呢,它有多少条数据,所以有个叫well,这个well当中有个叫RS,点我们的next啊,就可以把每一条数据给它取出来,只要有一条就有个next,只要有一条就个next,它会不断的去轮询,轮以后把我每一条数据里面的值给它取过来,那我就是2S点我们的get get int,因为我们的ID是个int类型的,所以我的一。
05:48
就这么写就可以了,写完以后它其实就是我们那个ID啊,就错了,应该是我们这个啊,咱们叫ID就等于它,嗯,好了,然后呢,第二个是我们的那个tell啊,咱们叫tell啊,那么RS.get SP,我们写个二,我们的这个tell,那也就有了,有了之后那你的ID和电话号码就做了一个映射,做映射之后我的map呢,就可以往里面放了,所以我的user map,诶放进来,点我们的put,那么把那个tell放过来,把ID给它放过来,诶这样的话呢,我们的数据呢,应该是有了的啊,就是这样好了,那这个做完以后呢,我RS点我们的close给它关闭我的这个查询结果集,接下来我们再来查询那个我们的时间,所以我们再来一个啊,它等于我们的connection,然后呢,点我们的prepare statement啊,然后呢,我的circle再准备一个啊,咱们再准备一个我们的叫做什么的quary,我们的date啊,我们的circle,所以把这个呢,我们写上啊,咱们叫select。
06:48
然后我来确认一下,咱们现在是查时间,那你查时间的话,这个时间我们应该啊,年月日都有的,所以呢,我们ID year month和day应该都查,所以呢,ID啊,咱们叫year,然后呢,我们的month,还有我们的day啊,咱们都要查一下,所以我们from这个from呢,就把咱们这个表给它拿到就行了,CT我们下划线,Date,嗯,好了,你这样的话把它全查呢,全查出来以后呢,我们拷贝我们放到这个地方啊来。
07:18
放到这个地方以后,那这个时候呢,我们现在准备我们没有条件呢,没有条件全查嘛,所以点我们查询,查询以后还是我们的查询结果集,查询结果集的处理方式是完全相同的,只不过查询的结果不一样,所以RS点我们的next啊,所以点我们的next好了,查询完成以后,那么首先第一个啊,我们的idd等于2s.get in,那这样的话呢,我们这边我们的一就有了啊,就是它,哎我确认一下咱们这个2018这个是数字还是植物串啊啊咱们这里呢,用的都是我们字物串,那就简单了啊,所以呢,我们这里来我们string啊,咱们写上,呃,咱们叫year啊,等于2s.get string,然后呢,给个二就可以了啊好,然后这个呢,我们就写上咱们叫month,这个呢,我们叫做day,嗯,好了,那这个呢,就是我们的三,诶这个就是我们的四,诶就可以了啊诶不对啊,写错了啊,这个应该是四啊来好了。
08:18
那我现在写完之后,那同学们想一想,那我现在怎么往那个map里面保存呢。我现在是不是应该往那个map里面保存了,对不对,保存,那保存的时候我们put,那我该怎么做呢。那么首先第二个是不是一定是ID啊,对吧,这个是关联的,一定是ID,那我前面这个该怎么做,是不是我直接把那个year再加上那个month,再加上那个什么,对,给他直接拼接起来就可以了。啊,是不是2010月十号是不接在一块就可以了,为什么?因为我们现在我们这边查询的结果当中,你从我们这边传过的里面是不是有那个时间,有时间我去查对应的那个ID是不就可以了,那是不是我们只要拼在一块就可以,是不是啊,还不行啊还不行,为什么还不行呢?因为你要记住咱们的格式的问题啊,咱们这里面存储的是什么样的格式,你看一下。
09:19
是不是一月份的一号啊,但是我们在生成数据的时候可不是这样的,咱们生成数据的时候,它的格式应该是这个样子,2018年的0101吧,而并不是说一月一吧,不是这么回事儿,咱们是0101,这样的话比较准确,因为是两位的嘛,比较准确,否则你拿个幺幺,你怎么知道是1月1号还是11月呢,对不对,那这样的话就不准确了啊,所以我们为什么要求它有格式呢?原因就在这儿了,所以在这种情况下,那么0101会更准确一些,年月日,可是我们数据库里面存的却没有那个零,所以怎么办?所以这个时候我们是不是可以判断一下怎么判断啊,判断你个month的长度啊,对吧?如果你如果你只是什么,只是一个一啊一位的长度,那么说明少一位啊,那我就补零不就完了吗?所以这个就简单了啊,所以我可以简单的判断一下叫if啊,咱们的month,然后呢,Month,然后呢,它这个地方呀,如果点我们的长度,它等于一,长度为一,说明你只有一位,那你有一位的话,肯定跟我的要求是不一样的,所以呢,它给它等于month啊,然后呢,前面再加上一个啊来前面加个零啊,其实我这里可以用常量来做啊,然后呢,把这个呢写完以后,同样道理,你下面那个D也是一样啊,所以呢,我们就来写上啊,我们那个D啊,咱们的长度,点我们的长度,如果它等于一,说明你的位数也不够,那不够的情况下,咱们也在前面加个零就可以了,所以把这个拿过来,拿过来以后这样的话你才符合我的格式,后面再做匹配的时候才能给可以找到啊,就是这样。
10:55
好了啊,这个呢,我们说一下,就是我们现在呢,做一种缓存的操作,然后呢,把这个数据给它准备好了,那接下来咱们往下来看啊,往下来看,那这样该怎么做。
11:06
这条二和三不能固定写死了吧,你不能固定写死的话,那么首先你是不是就应该拿到什么东西啊,你得拿到那个电话号码吧,对吧,还有一个你得拿到那个date吧,拿到拿到以后再做个转换对吗?那所以说在这个位置我们应该写上了,咱们叫做什么呢?咱们叫u map.get这个get是不是把那个跳传进去啊,你把跳传进去,你对应的那个组件你就能取到,同样道理,你这样也是一样的,咱们叫date,我们的map,点我们的get,你把这个date你传进去,你把这个传进去以后,你的那个时间上的那个什么东西啊,也能得到,诶也还可以的啊好了,那我这么写完以后,就是不是就剩下这两个东西吧,那就看他们两个的数据我怎么取到呗,套和data恰恰是咱们之前的什么呀,咱们麦当中是不是封装了呀,咱们的CALL1是不是电话,这个是不是时间,只不过这个时间可能有年,可能有年月,还有年月日吧,这个不重要,反正对应的。
12:07
据库的数据应该都是有的,既然都有的情况下,那我就把那个key给他做个转换就行了,所以在这种情况下呢,我要把那个给他拿到这个key啊,翠栏我们写上啊,咱们叫做K,这个K吧,那咱们等于点我们这有个叫to string啊,你这么得到以后,那我们该怎么办,是不是应该写上我们的数主啊叫case,我们叫啊就是它我们写上叫做k.split然后呢,给它一个下划线,诶我确认一下咱们这应该是个下划线吧,诶下划线,下划线的话,我拿下划线分解,分解之后,那咱们的第一个就是我的票啊,所以它写上一个我们的零,那这个呢,我们写上一个KS啊,写上一个我们的一,那你这样的话呢,就把咱们这个数据呢,给它从我们的数据库里面给它缓存住,缓存住以后做了一个转换,转换以后呢,这边呢就可以了啊,然后呢,我们这边当我做完之后啊,我这里忘了把这个加上啊,一点我们的打印对联信息啊好行了那。
13:07
那我现在呢,就把咱们当前的这个程序呢,做了一个补充啊,做了一个完善,因为之前确实没有这部分操作,那么程序是固定写死的,肯定不合适啊,所以呢,咱们现在把这个船装完了。
我来说两句