實訓學習記錄(一):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擴展了功能。

結語

這是第一次課的第一個總結,因爲這節課主要在講概念,所以沒有啥乾貨,但是我還是總結下來,我認爲有些概念性的東西還是很重要的,在第一次總結中提到的很多具體問題,我將在後面的總結中具體分析。

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