1、甚么是JDBC
JDBC(Java Database Connection)為java開(kāi)發(fā)者使用數(shù)據(jù)庫(kù)提供了統(tǒng)1的編程接口,它由1組java類和接口組成.是java程序與數(shù)據(jù)庫(kù)系統(tǒng)通訊的標(biāo)準(zhǔn)APl。 JDBC API使得開(kāi)發(fā)人員可使用純 java 的方式來(lái)連接數(shù)據(jù)庫(kù),并履行操作。
sun公司由于不知道各個(gè)主流商用數(shù)據(jù)庫(kù)的程序代碼,因此沒(méi)法自己寫代碼連接各個(gè)數(shù)據(jù)庫(kù)。因此,sun公司決定自己提供1套api,凡是數(shù)據(jù)庫(kù)想與Java進(jìn)行連接的,數(shù)據(jù)庫(kù)廠商自己必須實(shí)現(xiàn)JDBC這套接口。而數(shù)據(jù)庫(kù)廠商的JDBC實(shí)現(xiàn),我們就叫它此數(shù)據(jù)庫(kù)的數(shù)據(jù)庫(kù)驅(qū)動(dòng)。
2、使用JDBC訪問(wèn)數(shù)據(jù)庫(kù)流程
3、JDBC經(jīng)常使用接口
1、Driver接口
Driver接口由數(shù)據(jù)庫(kù)廠家提供,對(duì)java開(kāi)發(fā)者而言,只需要使用Driver接口就能夠了。
在編程中要連接數(shù)據(jù)庫(kù),必須先裝載特定廠商的數(shù)據(jù)庫(kù)驅(qū)動(dòng)程序。不同的數(shù)據(jù)庫(kù)有不同的裝載方法。
驅(qū)動(dòng)就是各個(gè)數(shù)據(jù)庫(kù)廠商實(shí)現(xiàn)的sun公司提出的JDBC接口,即對(duì)Connection等接口的實(shí)現(xiàn)類的jar文件。
裝載Mysql驅(qū)動(dòng)
Class.forName("com.mysql.jdbc.Driver");
裝載Oracle驅(qū)動(dòng)
Class.forName("oracle.jdbc.driver.OracleDriver");
2、DriverManage接口
1DriverManager是JDBC的管理層,作用于用戶和驅(qū)動(dòng)程序之間。
1DriverManager跟蹤可用的驅(qū)動(dòng)程序,并在數(shù)據(jù)庫(kù)和相應(yīng)的驅(qū)動(dòng)程序之間建立連接。
3、Connection接口
Connection與特定數(shù)據(jù)庫(kù)的連接(會(huì)話),在連接上下文中履行SQL語(yǔ)句并返回結(jié)果。
DriverManager的getConnection()方法建立在JDBC URL中定義的數(shù)據(jù)庫(kù)Connection連接上。
連接MYSQL數(shù)據(jù)庫(kù):
Connection connection = DriverManager.getConnection("jdbc:mysql://host:port/database","user","password");
連接ORACLE數(shù)據(jù)庫(kù):
Connection connection = DriverManager.getConnection("jdbc:oracle:thin:@host:port:database","user","password");
4、Statement接口
用于履行靜態(tài)SQL語(yǔ)句并返回它所生成結(jié)果的對(duì)象。
3種Statement類:
Statement:
由createStatement創(chuàng)建,用于發(fā)送簡(jiǎn)單的SQL語(yǔ)句。(不帶參數(shù)的)
PreparedStatement:**
繼承自Statement接口,由prepareStatement創(chuàng)建,用于發(fā)送含有1個(gè)或多個(gè)輸入?yún)?shù)的sql語(yǔ)句。PreparedStatement對(duì)象,會(huì)進(jìn)行預(yù)編譯,比Statement對(duì)象的效力更高,并且可以避免SQL注入。我們1般都使用PreparedStatement。
CallableStatement:
繼承自PreparedStatement,由方法prePareCall創(chuàng)建,用于調(diào)用存儲(chǔ)進(jìn)程。
經(jīng)常使用的Statement方法:
execute():運(yùn)行語(yǔ)句,返回是不是有結(jié)果集。
executeQuery():運(yùn)行select語(yǔ)句,返回ResultSet結(jié)果集。
executeUpdate():運(yùn)行insert/update/delete操作,返回更新的行數(shù)。
5、ResultSet接口
Statement履行SQL語(yǔ)句時(shí),返回ResultSet結(jié)果集。
ResultSet提供的檢索不同類型字段的方法,經(jīng)常使用的有:
getString():取得在數(shù)據(jù)庫(kù)里varchar、char等數(shù)據(jù)類型的對(duì)象。
getFloat():取得在數(shù)據(jù)庫(kù)里Float類型的對(duì)象。
getDate():取得在數(shù)據(jù)庫(kù)里Date類型的數(shù)據(jù)。
getBoolean():取得在數(shù)據(jù)庫(kù)里面Boolean類型的數(shù)據(jù)。
依序關(guān)閉使用的對(duì)象及連接:
ResultSet