实训学习记录(一):JAVA数据库知识——JDBC探究

前言

由于疫情影响,我很是颓废了一阵子,年初那阵子玩游戏玩的天昏地暗,每天玩六个小时,先玩人类一败涂地,再玩我的世界,然后又是LOL,最后下两把棋。罪过罪过,慢慢找到状态后,情况也不是特别好,小事一桩接着一桩。不过也没有办法,生活就是生活,我痛定思痛,决定卸载游戏,戒除淫欲,每天学习,每天锻炼,每天写总结。由于开不了学不能上课,学校为了促进就业,为我们找了机构进行实训,虽然讲的并不是特别一流,但是毕竟是免费的,我也认为在每天看高数之余,学习我的本质专业是非常有必要且天经地义的,因此,我决定每天学习并写总结,算是给我的一个交代吧,生活很难且没有什么意义,可是有饭吃,有空气可以吸,有星星可以看,就足以成为生活下去直到自然死亡那天的理由。废话不多说,赶紧写我的第一篇总结。

 

JAVA与数据库学习概述

我们第一天讲的就是Java与数据库,这个知识我之前学过不少,但是在这里我还是详细总结。

1.关于数据库

我们都知道数据库是存储数据用的,而我们大家经常性理解的广义数据库其实包括客户端与数据库,至少我总是这么认为,但是这个理解不太准确(可能只有我这么认为),数据库就是数据库,它仍然是一个软件,可是这个软件侧重的地方是数据存储,数据处理等方面,它将最重点的精力都放在了如何设计好的数据结构来存储数据,如何有最好的算法处理数据,分析数据。如何处理好不同用户之间的关系,如何处理好不同数据库进程之间的关系,不同进程的通信问题,而没有将重点放在交互设计上。很多数据库的数据库和客户端是分离的,你可以只选择安装数据库服务,然后使用命令行控制数据库即可,对于大佬来说这就够了。但是对于我这种穷学生来讲,软件没有图形用户界面就不叫软件(大误),但是事实上这个确实不是这样,所以在此我着重总结一下。

当然,我们可以选择下载图形用户界面也就是客户端,我们可以通过客户端来进行访问,同时数据库的优秀之处在于我可以用一台计算机上的客户端或者命令行来访问另一台服务器中或计算机中的数据库,这就涉及到了不同进程间的网络通信。因此数据库的涉及模块中不仅包含进程通信模块,还要包含网络通信模块。

总之,简要理解数据库的正确定义就是一个包含各种功能模块的,可供访问的,支持数据存储、处理、分析的软件。

2.数据库和Java的通信

数据库和Java的通信本质上是其他程序与数据库通信的一个缩影,现在很多人用Java,虽然总是有文章渲染Java不行了,但是其免费的优点让大家趋之若鹜,同时Java确实有着很多有点,这点姑且不讲,现在来总结Java与数据库通信的知识。

1.为啥

我们为什么要让Java和数据库通信,上面已经讲了,Java和数据库通信是其他程序与数据库通信的缩影。软件或者其他程序免不了和数据库打交道,就比如玩游戏时,我想登录,客户端就得在数据库中查我的个人信息。我有啥英雄,这个也是存储在数据库端,需要我去主动去查。就比如我玩我的世界,我联机了,领域也好,网易的小服务器也好,我移动了一个方块,这个信息也要传到数据库上,否则,我的存在就对于那个世界没有意义。

2.是啥

数据库与Java的通信是啥的,那自然就是用Java里边的方法,对数据库进行增删改查。这是一个很简单的东西。

3.咋办

我们如何让二者通信呢?也简单,我们大家都知道Java开源,而且能自己写工具类,自己用或者大家一起用,所以我们开发一个连接数据库的jar包就行了,里边包括上各种各样的方法,具体是什么方法现在不谈,只要是从宏观上看,这是一个能够连接数据库的工具包就行,然而,仅仅从宏观上看,事情也没有这么简单。

为什么呢?首先数据库是相当多的,我们知道名字的就不少,还有很多公司内部的,小型不出名的数据库,一共下来起码上百种,如果为每一个数据库都写一套方法,任务繁重是肯定的。其次每年都有大大小小的数据库停用,倒闭,所以工具包我写出来了,第二天有没有用,也不是我说了算的,有可能今天写出来了,第二天,那个数据库倒闭了。因此为每一个数据库都写一套Java的操作工具,是不太行得通的。这就引出了JDBC。

JDBC是什么

JDBC全程是Java DataBas Connectivity,就是java数据库连接,上面说到了关于每一个数据库开发连接工具的想法行不通,那么JDBC肯定不是这个东西了,那么JDBC是什么呢?为了让开发更轻松,结构更优化,Java采取的方式是:提供一套规范,具体操作方法让各数据库厂商去写。这就太好了,首先缓解了开发人员的压力,本来只有一伙人却要开发一堆不同数据库的连接方法,现在数据库厂商自己找人,一伙人开发一套就好了。如果数据库厂商不想写,那么Java就不支持它的数据库连接,那就是失去了一个合作机会与赚钱的平台,因为Java非常流行了,因此数据库厂商基本上还是看Java脸色的,毕竟没人跟钱过不去。

总之现在采取的结构就是,Java仅仅提供官方的数据库连接规范,在Java中,规范是用接口写的,而数据库厂商只要实现接口就行,讲自己的接口实现发出去,用户下载后使用就行。这是非常方便的,首先屏蔽掉了不同数据库的差异,因为接口仅有这一套,即使有很多的不同实现,但是面向用户,接口的操作方式是唯一的,因此不管你内部怎么写的,外部调用仅有一种样式,这非常方便,其次易于维护,Java只要维护自己的规范就行,而数据库厂商只要针对不同版本的规范进行修改即可。

现在我们可以知道JDBC的本质,就是一套由接口所书写的规范,而我们所说的数据库驱动,其实就是这套规范的实现。

JDBC的最基本使用

这里总结一下JDBC的最基本的几个类及其功能,我们首先要想我们用数据库都要干啥,我们使用数据库的步骤都是啥。我们想用数据库时,要先登陆,有账户也好没账户也好,首先我们要先连接数据库;连接上数据库后我们就可以输入指令了,或者写一些脚本来获取我们希望的信息;我们提交指令后便会获得返回数据,就是我们要查询的数据。因此JDBC根据这三个大功能分成了Connective,Statement,ResultSet

三个大类,分别用来连接,提交,处理结果。

由于在JDBC的后期使用时出现了一些安全问题,比如sql注入问题,所以后期又加入了PrepareStatement用来解决sql注入问题。为什么加入更高级的PrepareStatement后不删除Statement呢?这是因为系统开发时有一个开闭原则,就是尽量不修改,而要多扩展,所以对于Statement的态度不是删除,而是讲PrepareStatement作为一个子类,为Statement扩展了功能。

结语

这是第一次课的第一个总结,因为这节课主要在讲概念,所以没有啥干货,但是我还是总结下来,我认为有些概念性的东西还是很重要的,在第一次总结中提到的很多具体问题,我将在后面的总结中具体分析。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章