首頁(yè)常見(jiàn)問(wèn)題正文

JDBC介紹及第一個(gè)JDBC程序?qū)崿F(xiàn)步驟

更新時(shí)間:2023-01-29 來(lái)源:黑馬程序員 瀏覽量:

IT培訓(xùn)班

  JDBC的全稱是Java數(shù)據(jù)庫(kù)連接(Java Database Connectivity),它是一套用于執(zhí)行SQL語(yǔ)句的JavaAPI。應(yīng)用程序可通過(guò)這套API連接到關(guān)系數(shù)據(jù)庫(kù),并使用SQL語(yǔ)句來(lái)完成對(duì)數(shù)據(jù)庫(kù)中數(shù)據(jù)的查詢、更新和刪除等操作。應(yīng)用程序使用JDBC訪問(wèn)數(shù)據(jù)庫(kù)的方式如圖1-1所示。

  從圖1-1中可以看出,應(yīng)用程序使用JDBC訪問(wèn)特定的數(shù)據(jù)庫(kù)時(shí),需要與不同的數(shù)據(jù)庫(kù)驅(qū)動(dòng)進(jìn)行連接。由于不同數(shù)據(jù)庫(kù)廠商提供的數(shù)據(jù)庫(kù)驅(qū)動(dòng)不同,因此,為了使應(yīng)用程序與數(shù)據(jù)庫(kù)真正建立連接,JDBC不僅需要提供訪問(wèn)數(shù)據(jù)庫(kù)的API,還需要封裝與各種數(shù)據(jù)庫(kù)服務(wù)器通信的細(xì)節(jié)。

1674971588403_應(yīng)用程序使用JDBC訪問(wèn)數(shù)據(jù)庫(kù)方式.jpg

  圖1-1 應(yīng)用程序使用JDBC訪問(wèn)數(shù)據(jù)庫(kù)方式

  通過(guò)前面的學(xué)習(xí),我們對(duì)JDBC及其常用API有了大致的了解,接下來(lái)就開(kāi)始學(xué)習(xí)JDBC編程,JDBC編程大致按照以下幾個(gè)步驟進(jìn)行。

  (1)加載并注冊(cè)數(shù)據(jù)庫(kù)驅(qū)動(dòng),具體方式如下。

   DriverManager.registerDriver(Driver driver);

  (2)通過(guò)DriverManager獲取數(shù)據(jù)庫(kù)連接,具體方式如下。

   Connection conn= DriverManager.getConnection(String url,String,String pass);

  從上述方式可以看出,getConnection()方法中有三個(gè)參數(shù),它們分別表示數(shù)據(jù)庫(kù)url、登錄數(shù)據(jù)庫(kù)的用戶名和密碼。數(shù)據(jù)庫(kù)url通常遵循如下形式的寫(xiě)法。

  jdbc:subprotocol:subname

  上面的url寫(xiě)法中jdbc部分是固定的,subprotocol指定連接到特定數(shù)據(jù)庫(kù)的驅(qū)動(dòng)程序,而subname部分則很不固定,也沒(méi)有什么規(guī)律,不同數(shù)據(jù)庫(kù)的url形式可能存在較大差異,以MySQL數(shù)據(jù)庫(kù)url為例,其形式如下。

  jdbc:mysql://hostname:port/databasename

  (3)通過(guò)Connection對(duì)象獲取Statement對(duì)象。Connection創(chuàng)建Statement方式有如下三種。

 ?、賑reateStatement():創(chuàng)建基本的Statement對(duì)象。

 ?、趐repareStatement():創(chuàng)建PreparedStatement()對(duì)象。

 ?、踦repareCall():創(chuàng)建CallableStatement()對(duì)象。

  以創(chuàng)建基本的Statement()對(duì)象為例,具體方式如下。

   Statement stmt= conn.createStatement();

  (4)使用Statement執(zhí)行SQL語(yǔ)句。所有的Statement都有如下三種方法來(lái)執(zhí)行SQL語(yǔ)句。

  ①execute():可以執(zhí)行任何SQL語(yǔ)句。

 ?、趀xecuteQuery():通常執(zhí)行查詢語(yǔ)句,執(zhí)行后返回代表結(jié)果集的ResultSet對(duì)象。

 ?、踖xecuteUpdate():主要用于執(zhí)行DML和DDL語(yǔ)句。執(zhí)行DML語(yǔ)句,如INSERT、UPDATE或DELETE時(shí),返回受SQL語(yǔ)句影響的行數(shù),執(zhí)行DDL語(yǔ)句返回0。

  以executeQuery()方法為例,具體方式如下。

  //執(zhí)行SQL語(yǔ)句,獲取結(jié)果集ResultSet
  ResultSet rs=stmt.executeQuery(sql);

  (5)操作ResultSet結(jié)果集。如果執(zhí)行的SQL語(yǔ)句是查詢語(yǔ)句,執(zhí)行結(jié)果將返回一個(gè)ResultSet對(duì)象,該對(duì)象里保存了SQL語(yǔ)句查詢的結(jié)果。程序可以通過(guò)操作該ResultSet對(duì)象來(lái)取出查詢結(jié)果。ResultSet對(duì)象提供的方法主要可以分為以下兩類(lèi)。

 ?、賜ext()、previous()、first()、last()、beforeFirst()、afterlast()、absolute()等移動(dòng)記錄指針的方法。

 ?、趃etXxx()獲取指針指向行,特定列的值。

  (6)回收數(shù)據(jù)庫(kù)資源。關(guān)注數(shù)據(jù)庫(kù)連接,釋放資源,包括關(guān)閉ResultSet、Statement和Connection等資源。

  至此,JDBC編程的大致步驟已經(jīng)完成。

1674971919959_領(lǐng)取課程.jpg

分享到:
在線咨詢 我要報(bào)名
和我們?cè)诰€交談!