一篇文章帶你搞定Java的數(shù)據(jù)庫訪問
后臺(tái)回復(fù)“Java”即可獲贈(zèng)Java學(xué)習(xí)資料
大家好,我是Java進(jìn)階者,今天小編帶大家一起來學(xué)習(xí)JDBC技術(shù)!
一、前言
在應(yīng)用程序開發(fā)中,需要使用數(shù)據(jù)庫管理和存儲(chǔ)各種數(shù)據(jù)。在Java中,提供了一個(gè)JDBC技術(shù)(Java Database Connectivity,JDBC,Java數(shù)據(jù)庫連接),它的作用是連接數(shù)據(jù)庫并訪問。接下來小編帶大家一起來學(xué)習(xí)JDBC技術(shù)!
二、關(guān)系數(shù)據(jù)庫
1.目前,各種關(guān)系數(shù)據(jù)庫的操作基本使用SQL語言,SQL(Structured Query Language)是一個(gè)結(jié)構(gòu)化查詢語言。
2.常用的SQL語句,如下所示:
| 命令 | 功能 | 例子 |
|---|---|---|
| CREATE | 創(chuàng)建表格 | CREATE TABLE Test(Id VARCHAR(20) NOT NULL,Name VARCHAR(20) ) |
| INSERT | 插入數(shù)據(jù) | INSERT INTO Test VALUES('A01','張三') |
| SELECT | 查詢數(shù)據(jù) | SELECT * FROM Test WHERE Id='A01' |
| DELETE | 刪除數(shù)據(jù) | DELETE FROM Test WHERE Id='A01' |
| UPDATE | 更新數(shù)據(jù) | UPDATE Test set Id=Id+1 |
| DROP | 刪除表格 | DROP TABLE Test |
三、JDBC的概述
1.JDBC是一種執(zhí)行SQL語句的Java API。它由一組使用Java語言編寫的類和接口組成,使開發(fā)人員可以使用Java API來編寫數(shù)據(jù)庫應(yīng)用程序。
2.使用JDBC的技術(shù)向各種關(guān)系數(shù)據(jù)庫發(fā)送SQL語句就很方便,就不必為訪問Oracle數(shù)據(jù)庫專門寫一個(gè)程序,為訪問Sybase數(shù)據(jù)庫又專門寫一個(gè)程序,只需要JDBC API寫一個(gè)程序向相應(yīng)的數(shù)據(jù)庫發(fā)送SQL語句即可。開發(fā)人員使用Java語言和SQL語句編寫的數(shù)據(jù)庫應(yīng)用程序,可以在任何平臺(tái)上運(yùn)行。
3.JDBC驅(qū)動(dòng)可以分為四種類型,包括了JDBC-ODBC橋、本地API驅(qū)動(dòng)、網(wǎng)絡(luò)協(xié)議驅(qū)動(dòng)、本地驅(qū)動(dòng)。在后面會(huì)詳細(xì)的介紹這四種類型。
四、JDBC驅(qū)動(dòng)類型
(一)JDBC-ODBC橋
JDBC-ODBC橋:通過驅(qū)動(dòng)程序?qū)⑺械腏DBC調(diào)用傳給ODBC(Open Database Connectivity,ODBC,開放數(shù)據(jù)庫互連),然后ODBC調(diào)用本地?cái)?shù)據(jù)庫接口訪問數(shù)據(jù)庫,這種執(zhí)行效率很低,它是不適合需要存儲(chǔ)大量數(shù)據(jù)的應(yīng)用。
如下圖所示:

1)首先SQL命令通過ODBC-Bridge傳給ODBC,再由ODBC連接數(shù)據(jù)庫并傳遞SQL命令到數(shù)據(jù)庫中。
2)ODBC接受數(shù)據(jù)庫返回結(jié)果,然后通過ODBC-Bridge返回的結(jié)果給應(yīng)用程序。
(二)本地API驅(qū)動(dòng)
本地API驅(qū)動(dòng):通過JDBC-Native API橋接器的轉(zhuǎn)換,然后把客戶機(jī)API上的JDBC調(diào)用轉(zhuǎn)換成Oracle、 Sybase、Informix、DB2,最后存取數(shù)據(jù)庫。
如下圖所示:

1)首先應(yīng)用程序去調(diào)用JDBC Driver,然后JDBC Driver使用本地函數(shù)庫和數(shù)據(jù)庫進(jìn)行溝通。
2)本地函數(shù)庫返回執(zhí)行結(jié)果給JDBC Driver,最后JDBC Driver返回結(jié)果給應(yīng)用程序。
(三)網(wǎng)絡(luò)協(xié)議驅(qū)動(dòng)
網(wǎng)絡(luò)協(xié)議驅(qū)動(dòng):把JDBC 轉(zhuǎn)換成與 DBMS 無關(guān)的網(wǎng)絡(luò)協(xié)議,該協(xié)議又給某個(gè)服務(wù)器轉(zhuǎn)換成一種DBMS的協(xié)議。在該網(wǎng)絡(luò)服務(wù)器有個(gè)中間件(middleware)可以把Java客戶機(jī)連接到不同的數(shù)據(jù)庫中,它所使用的具體協(xié)議來自提供者。
如下圖所示:

1)通過SQL命令使JDBC Driver傳給Middleware Server中,然后Middleware Server把SQL命令傳給數(shù)據(jù)庫,并和數(shù)據(jù)庫進(jìn)行溝通。
2)將結(jié)果返回給Middleware Server,最后JDBC Driver返回的結(jié)果給應(yīng)用程序。
(四)本地協(xié)議驅(qū)動(dòng)
本地協(xié)議驅(qū)動(dòng):通過把JDBC調(diào)用轉(zhuǎn)換成具體的數(shù)據(jù)庫服務(wù)器,讓它可以接受網(wǎng)絡(luò)協(xié)議,然后允許客戶機(jī)上來調(diào)用DBMS服務(wù)器(數(shù)據(jù)庫管理系統(tǒng)(Database Management System,DBMS)),它是Intranet訪問最有效的一個(gè)解決方法。
如下圖所示:

1)首先應(yīng)用程序把SQL命令傳給JDBC Driver,然后JDBC Driver通過連接數(shù)據(jù)庫傳給SQL命令。
2)將執(zhí)行的結(jié)果返回給JDBC Driver,最后JDBC Driver返回結(jié)果給應(yīng)用程序。
五、總結(jié)
1.本文介紹了關(guān)系數(shù)據(jù)庫、JDBC的概述、JDBC驅(qū)動(dòng)類型。
2.關(guān)系數(shù)據(jù)庫SQL是一種結(jié)構(gòu)化查詢語言,介紹它的常用SQL語句,例如增刪改查。
3.JDBC是一種執(zhí)行SQL語句的Java API。它由一組使用Java語言編寫的類和接口組成,使開發(fā)人員可以使用Java API來編寫數(shù)據(jù)庫應(yīng)用程序。
4.JDBC驅(qū)動(dòng)類型分為四種,包括了JDBC-ODBC橋、本地API驅(qū)動(dòng)、網(wǎng)絡(luò)協(xié)議驅(qū)動(dòng)、本地驅(qū)動(dòng),介紹了每一種驅(qū)動(dòng)類型的作用。
5.希望大家通過本文的學(xué)習(xí),對(duì)你有所幫助!
最后需要拓展包的小伙伴,可以在公眾號(hào)后臺(tái)回復(fù)“拓展包”關(guān)鍵字進(jìn)行獲取。
我是Java進(jìn)階者,希望大家通過本文的學(xué)習(xí),對(duì)你有所幫助!歡迎大家加我微信,有問題可以隨時(shí)幫大家解決噢,交個(gè)朋友也好哇~
------------------- End -------------------
往期精彩文章推薦:

歡迎大家點(diǎn)贊,留言,轉(zhuǎn)發(fā),轉(zhuǎn)載,感謝大家的相伴與支持
想加入Java學(xué)習(xí)群請(qǐng)?jiān)诤笈_(tái)回復(fù)【入群】
萬水千山總是情,點(diǎn)個(gè)【在看】行不行
