【Java】基础65:JDBC设计思想

今天是刘小爱自学Java的第65天。

感谢你的观看,谢谢你。

在此之前,先说一则故事,学了JDBC的设计思想,莫名想到了这则故事……

在这里插入图片描述

2017年,微信和苹果发生过一次冲突。

苹果手机软件里的内购支付交易都要收税。

就比如说你用苹果手机在微信公众号里给人打赏了100块钱,苹果会抽30块钱。

要知道微信公众号打赏的钱,腾讯官方是一分钱都不收的。腾讯一想我都不盈利凭什么让你苹果赚钱?

就去找苹果谈判,苹果一听,我都是一视同仁的,所有软件都要收税,管你盈不盈利。

于是腾讯就怒了,直接将苹果手机微信公众号里的打赏功能下架了。

你要收税?我直接将支付下架,看你怎么收?

要知道安卓手机是没这种破事的。

苹果牛呀,人家要收税,你也拿它没办法。

而腾讯有着庞大的用户群体,所以也敢和苹果对着干,大不了要么用微信要么用苹果,让用户自己选。

后来不知道内部达成了什么交易,腾讯又上架了打赏功能,同时将打赏改成了现在的喜欢作者。

3年之后,也就是最近,腾讯和苹果又掐起来了。

腾讯出台了一则规范,大致意思就是用苹果手机的人暂时在微信公众号上无法支付了。

和2017年大相径庭,并且要知道最近这段时间腾讯做了两件事:

第一件是允许用户将《王者荣耀》迁移到安卓端;

第二件是在安卓版的微信上线了改微信号的功能。

真的只是出于便利用户吗?

或许吧。

一、Java与数据库

好,故事说完,继续开始Java的学习:

在这里插入图片描述
说了这么多,那和我们要学的Java有何关系?

要知道学Java是要连接数据库的。

对于Java来说,它要解决如下问题:

  • 数据库软件是有很多的:MySQL、Oracle、db2、SqlServer……等等。
  • 连接MySQL,要去研究MySQL如何编写。
  • 连接Oracle,要去研究Oracle如何编写。
  • ……等等等等
  • 这样下来就特别的繁琐,要知道各个数据库软件也不是一样的。

然后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

  • jdbc:mysql:说明数据库是mysql
  • locahost:3306:这个就是IP加上端口,若是其他电脑上的数据库,需要其对应的ip
  • 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,将其写了一遍。

没有详细地讲解,并且有些步骤还可以进一步优化,明天继续学习。

谢谢你的观看。

如果可以的话,麻烦帮忙点个赞,谢谢你。

猜你喜欢

转载自blog.csdn.net/qq_41228864/article/details/106867936