今天是刘小爱自学Java的第65天。 感谢你的观看,谢谢你。 在此之前,先说一则故事,学了JDBC的设计思想,莫名想到了这则故事…… 2017年,微信和苹果发生过一次冲突。 苹果手机软件里的内购支付交易都要收税。 就比如说你用苹果手机在微信公众号里给人打赏了100块钱,苹果会抽30块钱。 要知道微信公众号打赏的钱,腾讯是一分钱都不收的。腾讯一想我都不盈利凭什么让你苹果赚钱? 就去找苹果谈判,苹果一听,我都是一视同仁的,所有软件都要收税,管你盈不盈利。 于是腾讯就怒了,直接将苹果手机微信公众号里的打赏功能下架了。 你要收税?我直接将支付下架,看你怎么收? 要知道安卓手机是没这种破事的。 苹果牛呀,人家要收税,你也拿它没办法。 而腾讯有着庞大的用户群体,所以也敢和苹果对着干,大不了要么用微信要么用苹果。 后来不知道内部达成了什么交易,腾讯又上架了打赏功能,同时将打赏改成了现在的喜欢作者。 3年之后,也就是最近,腾讯和苹果又掐起来了。 腾讯出台了一则规范,大致意思就是用苹果手机的人暂时在微信公众号上无法支付了。 和2017年大相径庭,并且要知道最近这段时间腾讯做了两件事: 第一件是允许用户将《王者荣耀》迁移到安卓端; 第二件是在安卓版的微信上线了改微信号的功能。 真的只是出于便利用户吗? 或许吧。 一、Java与数据库好,故事说完,继续开始Java的学习: 说了这么多,那和我们要学的Java有何关系? 要知道Java是要连接数据库的。 对于Java来说,它要解决如下问题:
然后Java一想,我靠,我是编程语言呀。 我为毛要去研究数据库然后连接数据库? 我不写了,我就只制定一套规范。 至于Java和数据库如何连接?数据库厂商自己写。 在Java里面,什么是规范?就是接口。 于是Java就制定了一个接口,现在要连接数据库怎么办?直接用接口调用连接数据库的方法: 接口.getConnection()。 这是啥?就是强调了无数遍的面向接口编程。 接口调用方法,实际上是其实现类重写后的方法。 也就是说:如果数据库是MySQL,它要实现Java里的这个接口,同时重写getConnection方法。 具体是如何连接数据库的,Java不管。 Java为何敢这么做? 毕竟若是某个数据库软件很强硬,就是不写的话,那么Java就没法用这个数据库了。 要知道公司与公司的竞争是非常激烈的。 以前有家公司叫网景,它当年有一个网景浏览器,非常的厉害,但是要收费。 当时微软也有自己的IE浏览器,也是收费的。 后来比尔盖茨一看:小样,你竟然这么火,动了我的奶酪,我决定和你竞争。 竞争了半天,发现竞争不过,毕竟IE浏览器实在是太垃圾了。于是微软做了一个决定: 直接将IE浏览器免费了,同时将其绑定在自家的Window系统上。 然后,网景公司就倒闭了…… 大多数用户都是懒惰的,他们一看有免费的浏览器,还直接绑定在电脑上,都不用下载。 那干嘛还去用收费的浏览器?你好用又怎么样? 当初微软打的如意算盘就是先用免费把竞争对手弄死,再一家独大,收费赚钱。 但是万万没想到的是,谷歌、火狐、欧朋等浏览器问世了,同样也是免费的。 用户一看,同样是免费,那我肯定用体验好的呀,IE用起来真不方便,早就不想用了。 于是,IE浏览器还是没什么人用…… 回到上面的问题,Java为何有这个底气在? 要知道Java是开源免费的,无欲则刚。 事实上,数据库厂商也很乐意去实现Java制定的数据库规范,毕竟也能起到宣传的效果。 本质上也没有竞争关系,而是实现双赢。 现在我们用的是MySQL数据库,其已经写好了如何连接Java,我们只需要导入就好了。 二、JDBC入门JDBC,全称为Java database connectivity。 也就是Java和数据库的连接。 我们在IDEA开发工具里操作下Java是如何连接MySQL?一共有6步,一步一步讲解。 ①注册驱动 DriverManager是Java里的一个类,驱动管理器。 我们平时用电脑其实就要安装各种驱动,什么声卡驱动、网卡驱动,只不过很多自动安装罢了。 registerDriver()方法,注册驱动的意思。 其中参数就是驱动,Java中的Driver接口,也就是上述说的Java制定的规范。 如果数据库没有实现这个接口的话,需要我们自己去重写Driver的很多抽象方法。 就会非常地繁琐,并且还要懂对应数据库的语言。 但是MySQL数据库已经重写了,那我们只需要导入对应的包就好了。 这个包在MySQL官网就可以下载,然后复制到开发工具里面,导包就可以直接使用了。 所以参数直接就是一个匿名对象new Driver()。 其具体是如何实现Java与数据库连接的? MySQL已经在包里写好了,不用我们管。 ②获取连接 DriverManager类有一个静态方法getConnection() 直接调用就是获取连接的意思,也很好理解。 其中它有三个参数: url:jdbc:mysql://localhost:3306/liuxiaoai
user:也就是数据库的用户名。 psd:password的简写,也就是数据库的密码。 说白了,这个就是告诉Java,要连接的数据库在哪儿,数据库叫什么,以及用户名和密码。 ③创建sql执行语句 connection有一个createStatement()方法。 翻译过来就是创建语句的意思,什么语句? 我们数据库查询操作的sql语句。 statement等于是将在Java程序里输入的sql语句告诉给数据库。 ④执行语句 也就是我们在数据库上输入的sql语句,只不过在Java里它就是一个字符串。 statement有一个executeQuary()方法 execute,执行的意思。 Quary,查询的意思。 因为输入的sql语句为查询语句,那么就调用执行查询方法。 语句执行完了之后会得到一个结果ResultSet。 ⑤处理结果 这其实就是集合中学到的迭代器。 这个如何更好地理解呢? 一张数据表表它的第一行是列名,后面还有很多行都是对应的数据。 resultSet有一个next()方法,用于判断下一行是否还有对应的数据。
其中getString()方法也就是得到具体的值,参数即为表中的列名。 也就是根据列名得到当前行中的具体数值。 ⑥释放资源 close()方法关流。 最后运行下程序,结果如下: 因为只查询了name和age这两个字段,控制台也就只输出这两个字段对应的值。 最后今天只是初步接触了下JDBC,将其写了一遍。 没有详细地讲解,并且有些步骤还可以进一步优化,明天继续学习。 谢谢你的观看。 如果可以的话,麻烦帮忙点个赞,谢谢你。 |
|