Java程序設(shè)計模塊7 連接數(shù)據(jù)庫_第1頁
Java程序設(shè)計模塊7 連接數(shù)據(jù)庫_第2頁
Java程序設(shè)計模塊7 連接數(shù)據(jù)庫_第3頁
Java程序設(shè)計模塊7 連接數(shù)據(jù)庫_第4頁
Java程序設(shè)計模塊7 連接數(shù)據(jù)庫_第5頁
已閱讀5頁,還剩35頁未讀 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

模塊7連接數(shù)據(jù)庫學習目標知識目標:1.理解JDBC的作用2.熟悉JDBC的常用API3.掌握JDBC操作數(shù)據(jù)庫的步驟技能目標:1.會連接數(shù)據(jù)庫2.會對數(shù)據(jù)庫的進行查詢3.會實現(xiàn)對數(shù)據(jù)庫的增刪改操作素質(zhì)目標:1.培養(yǎng)學生自信、勇于嘗試的良好品質(zhì)2.培養(yǎng)善于反思、勤于總結(jié)的習慣任務(wù)1JDBC連接數(shù)據(jù)庫大部分項目都需要對數(shù)據(jù)庫進行連接操作。Java程序?qū)?shù)據(jù)庫的訪問是通過JDBC工具包進行的。JDBC全稱JavaDataBaseConnectivity,即Java數(shù)據(jù)庫連接,是一組由Java語言編寫的類和接口的統(tǒng)稱,它為程序開發(fā)者提供了用于實現(xiàn)數(shù)據(jù)庫訪問的標準API。通過這些API,Java程序可以使用SQL語句對目前的大部分主流數(shù)據(jù)庫進行操作。JDBC對不同數(shù)據(jù)庫的操作是類似的,本章以MySQL數(shù)據(jù)庫為例來說明JDBC的使用。7.1.1JDBC連接數(shù)據(jù)庫【任務(wù)導入】

大部分項目都需要對數(shù)據(jù)庫進行各種操作。Java程序?qū)?shù)據(jù)庫的訪問是通過JDBC工具包進行的。JDBC全稱JavaDataBaseConnectivity,即Java數(shù)據(jù)庫連接,是一組由Java語言編寫的類和接口的統(tǒng)稱,它為程序開發(fā)者提供了用于實現(xiàn)數(shù)據(jù)庫訪問的標準API。通過這些API,Java程序可以使用SQL語句對目前的大部分主流數(shù)據(jù)庫進行操作。JDBC對不同數(shù)據(jù)庫的操作是類似的,本任務(wù)以MySQL數(shù)據(jù)庫為例,實現(xiàn)與數(shù)據(jù)庫的連接。

對數(shù)據(jù)庫進行連接,不是一個簡單的過程,需要對軟件環(huán)境進行配置,由于每個人使用的軟件環(huán)境不同,可能會出現(xiàn)這樣或那樣的問題,因此,要善于從各種途徑尋找資料,大膽嘗試,勤于總結(jié),尋求解決問題的方法。7.1.1認識JDBCJDBCJDBC即Java數(shù)據(jù)庫連接。JDBC是Java提供給編程人員的一套操作數(shù)據(jù)庫的規(guī)范,它由一組Java類和接口組成。JDBC沒有具體指定連接哪種數(shù)據(jù)庫,它可以連接多種常見的數(shù)據(jù)庫,比如Oracle、MySQL和SQLServer等。通過這套JDBC接口進行編程,應(yīng)用程序可以調(diào)用驅(qū)動jar包中的實現(xiàn)類方法,實現(xiàn)對數(shù)據(jù)庫的查詢、更新、插入和刪除等操作。7.1.1認識JDBC2、JDBC常用的類和接口JDBC的核心是為用戶提供JavaAPI類庫,讓用戶能夠創(chuàng)建數(shù)據(jù)庫連接、執(zhí)行SQL語句、檢索結(jié)果集等,Java程序開發(fā)人員可以通過這個類庫來開發(fā)數(shù)據(jù)庫應(yīng)用程序。JDBC中主要的類和接口在java.sql包中,常用的類和接口,如表7.1所示。名稱類型作用DriverManager類驅(qū)動管理器,管理驅(qū)動程序,建立數(shù)據(jù)庫連接Connection接口表示與特定數(shù)據(jù)庫的連接Statement接口用于表示和執(zhí)行靜態(tài)SQL語句ResultSet接口查詢數(shù)據(jù)庫返回的結(jié)果記錄的集合PreparedStatement接口表示預(yù)編譯的SQL語句的對象SQLException類提供關(guān)于數(shù)據(jù)庫訪問錯誤或其他錯誤信息的異常表7.1JDBC常用的類和接口7.1.2連接操作數(shù)據(jù)庫在使用JDBC之前,需要做一些準備工作,準備好數(shù)據(jù)庫。本書使用的數(shù)據(jù)庫是MySQL。首先在MySQL可視化工具MySQLWordbench中建立學生信息數(shù)據(jù)庫StudentIFO,并在此建立學生學籍信息表StudentFrom,表結(jié)構(gòu)如圖7.2所示。7.1.2連接操作數(shù)據(jù)庫接下來在表里輸入幾條記錄,方便后面的測試,完成后的表內(nèi)容如圖7.3所示。圖7.3學生學籍信息表的初始數(shù)據(jù)7.1.2連接操作數(shù)據(jù)庫數(shù)據(jù)庫的準備工作完成了,接下來學習如何通過JDBC操作數(shù)據(jù)庫。下面示例的環(huán)境均為win10+MySQL8.0數(shù)據(jù)庫。7.1.2連接操作數(shù)據(jù)庫1、下載MySQL數(shù)據(jù)庫驅(qū)動(如圖7.4所示),配置環(huán)境。圖7.4下載數(shù)據(jù)庫驅(qū)動2、將下載的壓縮包進行解壓,解壓后的文件夾中有一個jar包。3、打開eclipse編輯器,創(chuàng)建一個名為“l(fā)ibs”的java項目,如圖7.6所示。4、選中“l(fā)ibs”項目,鼠標右擊libs,選擇“Properties”,在彈出的對話框,選擇“JavaBuildPath->Libraries->AddExternalJARs…”。在彈出的“JARSeletion”對話框,選擇“mysql-connector-java-8.0.20.jar”文件(本書案例加載的是8.0.20版本),如圖7.7所示。7.1.2連接操作數(shù)據(jù)庫(1)加載數(shù)據(jù)庫驅(qū)動通過Class類的forName()方法實現(xiàn):

publicstaticClass<?>forName(StringclassName)throwsClassNotFoundException其中參數(shù)className表示要加載的驅(qū)動類名稱,不同數(shù)據(jù)庫的驅(qū)動類名是不同的,MySQL加載語句為:"com.mysql.cj.jdbc.Driver";所以加載語句是:Class.forName("com.mysql.cj.jdbc.Driver");7.1.2連接操作數(shù)據(jù)庫(2)與指定數(shù)據(jù)庫建立連接(DriverManager類)

創(chuàng)建與指定數(shù)據(jù)庫的連接,使用類DriverManager的靜態(tài)方法getConnection()實現(xiàn)。

DriverManager.getConnection(dbURL,dbName,dbPwd);

其中:參數(shù)dbURL表示數(shù)據(jù)庫的連接地址,dbName和dbPwd分為為連接數(shù)據(jù)庫的用戶名和密碼。如果連接成功,方法返回一個代表該數(shù)據(jù)庫連接的Connection對象。7.1.2連接操作數(shù)據(jù)庫用dbURL指定連接哪個數(shù)據(jù)庫,dbURL的地址格式和數(shù)據(jù)庫類型有關(guān),對于mysql8.x,它不需要建立ssl連接,其格式如下:jdbc:mysql://<數(shù)據(jù)庫服務(wù)器名稱或IP地址>:<端口號>/<數(shù)據(jù)庫名稱>?serverTimezone=UTC7.1.2連接操作數(shù)據(jù)庫如若要連接學生信息數(shù)據(jù)庫StudentIFO,該數(shù)據(jù)庫運行在本機(即主機名為localhost,或IP地址為127.0.0.1),端口號為3306,則dbURL應(yīng)該為:StringdbURL="jdbc:mysql://127.0.0.1:3306/StudentIFO?serverTimezone=UTC";StringdbName="root";//用戶名StringdbPwd="123456";//數(shù)據(jù)庫密碼7.1.2連接操作數(shù)據(jù)庫(3)獲取Statement對象(Connection接口)與指定的數(shù)據(jù)庫進行連接之后,得到一個Connection對象。Connection接口表示與Java程序的連接,只有獲得與數(shù)據(jù)庫的連接對象之后,才能操作數(shù)據(jù)庫,建立連接的語句: ConnectiondbConn=DriverManager.getConnection(dbURL,dbName,dbPwd);Connection接口提供的常用方法,可以創(chuàng)建Statement對象,如表7.2所示。表7.2創(chuàng)建Statement對象的方法7.1.2連接操作數(shù)據(jù)庫(4)使用SQL語句操作數(shù)據(jù)庫(Statement接口)Java程序中,所有需要執(zhí)行的SQL語句都是由Statement對象封裝并發(fā)送到對應(yīng)數(shù)據(jù)庫進行操作的。創(chuàng)建了Statement對象,就可以用它提供的方法來執(zhí)行SQL語句,Statement接口執(zhí)行SQL語句的方法,如表7.3所示。表7.3執(zhí)行SQL語句的方法7.1.2連接操作數(shù)據(jù)庫(5)操作結(jié)果集(ResultSet接口)執(zhí)行executeQuery(sql),會得到一個結(jié)果集ResultSet。ResultSet接口用于保存JDBC執(zhí)行查詢時返回的結(jié)果集,結(jié)果集封裝在一個邏輯表格中,內(nèi)部有一個執(zhí)行表格數(shù)據(jù)行的指針(游標)。剛創(chuàng)建ResultSet對象時,游標指向第一行數(shù)據(jù)的前面。ResultSet接口提供的常用方法如表7.4所示。方法說明booleannext()將游標移到下一行booleanabsolute(introw)將游標移到指定的row行booleanfirst()將當前行定位到記錄集的第一行booleanlast()將當前行定位到記錄集的最后一行…………表7.4ResultSet接口的常用方法7.1.2連接操作數(shù)據(jù)庫(6)關(guān)閉連接,釋放內(nèi)存在完成數(shù)據(jù)庫的操作之后,應(yīng)將其關(guān)閉,以釋放占用的資源。這也是編程的良好習慣。Connection、Statement、ResultSet都有close()方法來釋放對應(yīng)占用的資源,關(guān)閉遵循先打開后關(guān)閉的原則,即一般按照ResultSet、Statement、Connection的順序,類似以下代碼: rs.close(); stmt.close(); conn.close();其實當Connection關(guān)閉時,其它的一切操作都會關(guān)閉。所以有時只寫“conn.close();”也是可以的。試一試案例7.1連接數(shù)據(jù)庫。在libs項目中新建一個名字為MyConnection的java類,使用JDBC連接學生信息數(shù)據(jù)庫StudentIFO的數(shù)據(jù)表StudentFrom。程序代碼:MyConnection.java練一練 設(shè)計一個員工管理系統(tǒng),員工數(shù)據(jù)使用名稱為EmployeeManage的數(shù)據(jù)庫存儲,數(shù)據(jù)庫里有一張員工信息表emp,有以下字段:員工編號、姓名、性別、部門、入職時間、薪水。請你建立該數(shù)據(jù)庫和表,并寫一個Java程序測試與此數(shù)據(jù)庫的連接。任務(wù)7.2實現(xiàn)查詢操作【任務(wù)導入】與數(shù)據(jù)庫建立連接之后,就可以對數(shù)據(jù)庫進行查詢、增加、刪除、更新等操作。其中查詢數(shù)據(jù)表是最常見的操作之一。本任務(wù)就是在連接數(shù)據(jù)庫的基礎(chǔ)上,實現(xiàn)對學生基本信息的查詢。任務(wù)導入思考:1、 如何使用JDBC查詢學生信息?2、 如何實現(xiàn)順序查詢?7.2查詢操作與數(shù)據(jù)庫連接之后,可以通過創(chuàng)建Statement對象對數(shù)據(jù)庫進行操作,代碼如下:Stringsql="select*fromStudentFrom";Statementstmt=dbConn.createStatement();//創(chuàng)建Statement對象stmtResultSetrs=stmt.executeQuery(sql);數(shù)據(jù)的查詢結(jié)果存放在ResultSet對象中,封裝在一個邏輯表格中,也就是一個二維表,每一行代表一條記錄,每一列代表一個字段。試一試案例7.2查詢StudentFrom表的學生信息。程序代碼:Select_data.java練一練

編寫程序,輸出員工信息表emp的員工的信息。任務(wù)7.3實現(xiàn)更新操作【任務(wù)導入】數(shù)據(jù)庫的常用操作包括查詢和更新操作。更新操作包含了對記錄的插入、刪除、修改三種。本任務(wù)就是運用JDBC實現(xiàn)對數(shù)據(jù)庫的更新。任務(wù)導入思考:1、如何運用JDBC實現(xiàn)對數(shù)據(jù)庫的更新操作?2、Statement和PreparedStatement的區(qū)別?7.3.1使用Statement更新數(shù)據(jù)在JDBC中,不管是插入、刪除還是修改記錄,需要調(diào)用Statement對象的executeUpdate()方法來實現(xiàn),該方法的格式為: intexecuteUpdate(Stringsql)throwsSQLException

其中,參數(shù)sql指的是要執(zhí)行的插入、刪除和更改SQL語句。試一試案例7.3對StudentFrom表進行插入記錄、刪除記錄和更新記錄的操作。程序代碼:Update_data.java7.3.2使用PreparedStatement更新數(shù)據(jù)接口Statement和接口PreparedStatement都可以用于處理SQL語句。它們的區(qū)別在于:1、接口Statement繼承自Wrapper,接口PreparedStatement繼承自Statement。2、Statement每次執(zhí)行sql語句,數(shù)據(jù)庫都要執(zhí)行sql語句的編譯,對于僅執(zhí)行一次查詢并返回結(jié)果的情形,效率高于PreparedStatement。3、PreparedStatement是預(yù)編譯的,在執(zhí)行可變參數(shù)的一條SQL時,PreparedStatement比Statement的效率高,因為DBMS預(yù)編譯一條SQL當然會比多次編譯一條SQL的效率要高。對于多次重復執(zhí)行的語句,使用PreparedStament效率會更高一點。7.3.2使用PreparedStatement更新數(shù)據(jù)PreparedStament的常用方法,如表7.5所示。表7.5PreparedStatement常用方法試一試例7.4使用PreparedStatement對學生信息表StudentFrom進行查詢。程序代碼:update_data.java試一試例7.5使用PreparedStatemen

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論