JDBC入門教程-詳解JDBC連接數(shù)據(jù)庫

在本教程中講解了Java語言如何連接數(shù)據(jù)庫,對數(shù)據(jù)庫中的數(shù)據(jù)進(jìn)行增刪改查操作,適合于已經(jīng)學(xué)習(xí)過Java編程基礎(chǔ)以及數(shù)據(jù)庫的同學(xué)。Java教程中闡述了接口在開發(fā)中的真正作用,JDBC規(guī)范制定的背景,JDBC編程六部曲,JDBC事務(wù),JDBC批處理,SQL注入,行級鎖等。
什么是JDBC?
Java DataBase Connectivity 在java語言中編寫sql語句,對mysql數(shù)據(jù)庫中的數(shù)據(jù)進(jìn)行CRUD操作。
JDBC就是Java數(shù)據(jù)庫連接,說白了就是用Java語言來操作數(shù)據(jù)庫。原來我們操作數(shù)據(jù)庫是在控制臺使用SQL語句來操作數(shù)據(jù)庫,JDBC是用Java語言向數(shù)據(jù)庫發(fā)送SQL語句。
JDBC本質(zhì)上是什么呢?
java.sql.*;這個(gè)包下都是JDBC的接口,SUN公司制定的!
JDBC是體現(xiàn)“接口作用”的非常經(jīng)典的例子。
JDBC降低了耦合度,提高了擴(kuò)展力。
對于java程序員來說,不需要關(guān)心數(shù)據(jù)庫是哪個(gè)品牌。只要面向JDBC接口編程就行!
JDBC整個(gè)程序的結(jié)構(gòu)當(dāng)中有三波人?
第一波:SUN公司,負(fù)責(zé)制定JDBC接口。這些接口已經(jīng)寫好了,在java.sql.*;
第二波:java.sql.*下面的所有接口都要有實(shí)現(xiàn)類,這些實(shí)現(xiàn)類是數(shù)據(jù)庫廠家編寫的。
我們連接的是mysql數(shù)據(jù)庫,mysql數(shù)據(jù)庫廠家的實(shí)現(xiàn)類在哪里呢?
mysql-connector-java-5.1.23-bin.jar
jar包中很多.class字節(jié)碼文件,這是mysql數(shù)據(jù)庫廠家寫的接口實(shí)現(xiàn)!
注意:如果連接的是oracle數(shù)據(jù)庫,你需要從網(wǎng)上下載oracle的jar包。
mysql-connector-java-5.1.23-bin.jar 這個(gè)jar包有一個(gè)專業(yè)的術(shù)語,大家記住就行:mysql的驅(qū)動。如果是oracle的jar,被稱為oracle的驅(qū)動。
第三波:我們java程序員,面向JDBC接口寫代碼就行!
JDBC開發(fā)之前的準(zhǔn)備工作?
mysql的驅(qū)動jar包,需要配置到classpath當(dāng)中嗎?
mysql-connector-java-5.1.23-bin.jar里是字節(jié)碼,是class文件。
Java虛擬機(jī)的類加載器會去加載class文件,類加載器怎么能夠找到這些class文件呢?
classpath沒有配置的情況下,默認(rèn)從當(dāng)前路徑下加載class。
classpath如果配置死了,例如:classpath=D:\abc,則表示固定只從d:\abc目錄下找class
classpath=.;D:\course\04-JDBC\resources\MySql Connector Java 5.1.23\mysql-connector-java-5.1.23-bin.jar
. 代表什么?當(dāng)前路徑。
以上的classpath什么意思?
類加載器從當(dāng)前路徑下加載class,如果當(dāng)前路徑下沒找到,則去D:\course\04-JDBC\resources\MySql Connector Java 5.1.23\mysql-connector-java-5.1.23-bin.jar找class文件。
jar包需要解壓嗎?
不需要解壓,java虛擬機(jī)的類加載器有這個(gè)能力找到class文件。
實(shí)現(xiàn)一個(gè)登錄功
第一步:提供一個(gè)輸入的界面,可以讓用戶輸入用戶名和密碼。
第二步:底層數(shù)據(jù)庫當(dāng)中需要有一張用戶表,用戶表中存儲了用戶信息。
第三步:當(dāng)java程序接收到用戶名和密碼的時(shí)候,連接數(shù)據(jù)庫驗(yàn)證用戶名和密碼。
驗(yàn)證通過,表示登錄成功,驗(yàn)證失敗,表示登錄失敗。
Statement主要是進(jìn)行sql語句的拼接。PreparedStatement可以避免sql注入,主要進(jìn)行傳值。
JDBC的事務(wù)問題
conn.setAutoCommit(false);
conn.commit();
conn.rollback();
如果你想深入學(xué)習(xí)JDBC,快速掌握這門技術(shù),點(diǎn)擊??鏈接,一定對你有所幫助。

