第4章_JDBC數據庫訪問技術_第1頁
第4章_JDBC數據庫訪問技術_第2頁
第4章_JDBC數據庫訪問技術_第3頁
第4章_JDBC數據庫訪問技術_第4頁
第4章_JDBC數據庫訪問技術_第5頁
已閱讀5頁,還剩55頁未讀, 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、第第4章章 JDBC數據庫訪問技術數據庫訪問技術 數據庫是Web應用程序重要組成部分,在Java Web應用程序中,數據庫訪問是通過Java數據庫連接(Java DataBase Connectivity,簡稱JDBC )實現的。JDBC為開發人員提供了一個標準的API。 本章介紹使用JDBC驅動程序連接數據庫和使用連接池技術連接數據庫并設計應用程序的方法、步驟和實例。第第4章章 JDBC數據庫訪問技術數據庫訪問技術4.1 JDBC技術概述技術概述4.2 JDBC訪問數據庫訪問數據庫4.3 綜合案例綜合案例學生身體體質信息管理系統的開發學生身體體質信息管理系統的開發4.4 數據源與連接池技術數

2、據源與連接池技術本章小結本章小結4.1 JDBC技術概述技術概述 JDBC是一種用于執行SQL語句的Java API,由一組類與接口組成,通過調用這些類和接口所提供的方法,可以使用標準的SQL語言來存取數據庫中的數據。本節內容:4.1.1 驅動程序接口Driver4.1.2 驅動程序管理器DriverManager4.1.3 數據庫連接接口Connection4.1.4 執行SQL語句接口Statement4.1.5 執行動態SQL語句接口PreparedStatement4.1.6 訪問結果集接口ResultSet類或接口作用java.sql.DriverManager該類處理驅動程序的加載

3、和建立新數據庫連接java.sql.Connection該接口實現對特定數據庫的連接java.sql.Satement該接口表示用于執行靜態SQL語句并返回它所生成結果的對象java.sql.PreparedStatement該接口表示預編譯的SQL語句的對象,派生自Satement,預編譯SQL效率高且支持參數查詢java.sql.CallableStatement該接口表示用于執行SQL語句存儲過程的對象。派生自PreparedStatement,用于調用數據庫中的存儲過程java.sql.ResultSet該接口表示數據庫結果集的數據表,統稱通過執行查詢數據庫的語句生成4.1.1 驅動程

4、序接口Driver 每種數據庫都提供了數據庫驅動程序,并且都提供了一個實現java.sql.Driver接口的類,簡稱Driver類。 在應用程序開發中,需要通過java.lang.Class類的靜態方法forName(String className),加載該Driver類。在加載時,創建自己的實例并向java.sql.DriverManager類注冊該實例。4.1.2 驅動程序管理器驅動程序管理器DriverManager java.sql.DriverManager類負責管理JDBC驅動程序的基本服務,是JDBC的管理層,作用于用戶和驅動程序之間,負責跟蹤可用的驅動程序,并在數據庫和驅動

5、程序之間建立連接。 DriverManager類即可用來建立數據庫連接。 DriverManager類提供的最常用的方法是: Connection getConnection(String url,String user,String password) 該方法為靜態方法,用來獲得數據庫連接,有3個入口參數,依次為要連接數據庫的URL、用戶名和密碼,返回值類型為java.sql.Connection4.1.3 數據庫連接接口數據庫連接接口Connection java.sql.Connection接口負責與特定數據庫的連接,形成連接對象。由該對象完成相關的操作。方法名稱功能描述createSt

6、atement()創建并返回一個Statement實例,通常在執行無參數的SQL語句時創建該實例prepareStatement()創建并返回一個PreparedStatement實例,通常在執行包含參數的SQL語句時創建該實例,并對SQL語句進行了預編譯處理close()立即釋放Connection實例占用的數據庫和JDBC資源,即關閉數據庫連接表4-2 Connection接口的常用方法4.1.4 執行執行SQL語句接口語句接口Statement java.sql.Statement接口用來執行靜態的SQL語句,并返回執行結果。Statement接口提供的常用方法。方法名稱功能描述exec

7、uteQuery(String sql)執行指定的靜態SELECT語句,并返回一個永遠不能為null的ResultSet實例executeUpdate(String sql)執行指定的靜態INSERT、UPDATE或DELETE語句,并返回一個int型數值,為同步更新記錄的條數close()立即釋放Statement實例占用的數據庫和JDBC資源,即關閉Statement實例4.1.5 執行動態SQL語句接口 PreparedStatement java.sql.PreparedStatement接口繼承于Statement接口,是Statement接口的擴展,用來執行動態的SQL語句,即包含

8、參數的SQL語句。PreparedStatement接口提供的常用方法。方法名稱功能描述executeQuery()執行前面包含參數的動態SELECT語句,并返回一個永遠不能為null的ResultSet實例executeUpdate()執行前面包含參數的動態INSERT、UPDATE或DELETE語句,并返回一個int型數值,為同步更新記錄的條數setXxx()為指定參數設置Xxx型值close()立即釋放Statement實例占用的數據庫和JDBC資源,即關閉Statement實例4.1.6 訪問結果集接口訪問結果集接口ResultSet 通過該接口的實例可以獲得檢索結果集,以及對應數據表

9、的相關信息。ResultSet實例是通過執行查詢數據庫的語句生成。ResultSet接口提供的常用方法。方法名稱功能描述first()移動指針到第一行;如果結果集為空則返回false,否則返回true;如果結果集類型為TYPE_FORWARD_ONLY將拋出異常last()移動指針到最后一行;如果結果集為空則返回false,否則返回true;如果結果集類型為TYPE_FORWARD_ONLY將拋出異常previous()移動指針到上一行;如果存在上一行則返回true,否則返回false;如果結果集類型為TYPE_FORWARD_ONLY將拋出異常next()移動指針到下一行;指針最初位于第一行

10、之前,第一次調用該方法將移動到第一行;如果存在下一行則返回true,否則返回falsegetRow()查看當前行的索引編號;索引編號從1開始,如果位于有效記錄行上則返回一個int型索引編號,否則返回0findColumn()查看指定列名的索引編號;該方法有一個String型入口參數,為要查看列的名稱,如果包含指定列,則返回int型索引編號,否則將拋出異常close()釋放ResultSet實例占用的數據庫和JDBC資源,當關閉所屬的Statement實例時也將執行此操作4.2 JDBC訪問數據庫使用使用JDBC訪問數據庫,其訪問流程是:訪問數據庫,其訪問流程是:(1)注冊驅動。)注冊驅動。(2

11、)建立連接)建立連接(Connection)。(3)創建數據庫操作對象用于執行)創建數據庫操作對象用于執行SQL的語句。的語句。(4)執行語句。)執行語句。(5)處理執行結果)處理執行結果(ResultSet)。(6)釋放資源。)釋放資源。本節內容:本節內容:4.2.1 注冊驅動注冊驅動MySQL的驅動程序的驅動程序4.2.2 JDBC連接數據庫創建連接對象連接數據庫創建連接對象4.2.3 創建數據庫的操作對象創建數據庫的操作對象4.2.4 執行執行SQL4.2.5 獲得查詢結果并進行處理獲得查詢結果并進行處理4.2.6 釋放資源釋放資源4.2.7 數據庫亂碼解決方案數據庫亂碼解決方案4.2.

12、1 注冊驅動MySQL的驅動程序1將驅動程序文件添加到應用項目將驅動程序文件添加到應用項目 將驅動程序將驅動程序mysql-connector-java-5.1.6-bin,拷貝到,拷貝到Web應應用程序的用程序的WEB-INFlib目錄下,目錄下,Web應用程序就可以通過應用程序就可以通過JDBC接口訪問接口訪問MySQL數據庫了。數據庫了。2加載注冊指定的數據庫驅動程序加載注冊指定的數據庫驅動程序 對于對于MySQL數據庫,其驅動程序加載格式:數據庫,其驅動程序加載格式: Class.forName(com.mysql.jdbc.Driver); 其中,其中,“com.mysql.jdbc

13、.Driver”為為MySQL數據庫驅動程序數據庫驅動程序類名。類名。4.2.2 JDBC連接數據庫創建連接對象 創建數據庫連接對象,需要首先形成創建數據庫連接對象,需要首先形成“連接符號字連接符號字(URL)”,然后利用,然后利用“連接符號字連接符號字”實現連接并創建連接對象。實現連接并創建連接對象。1數據庫連接的數據庫連接的URL 對于對于MySQL數據庫的連接符號字,可采用如下方式數據庫的連接符號字,可采用如下方式創建:創建:String url1=jdbc:mysql:/數據庫服務器數據庫服務器IP:3306/數據庫名數據庫名;String url2=?user=root&pa

14、ssword=密碼密碼;String url3=&useUnicode=true&characterEncoding=UTF-8;String url=url1+url2+ url3;2利用連接符號字實現連接,獲取連接對象利用連接符號字實現連接,獲取連接對象 DriverManager類提供了類提供了getConnection方法,用來建立與數方法,用來建立與數據庫的連接。調用據庫的連接。調用getConnection()方法可返回一個數據庫連接方法可返回一個數據庫連接對象。對象。getConnection方法有方法有3種不同的重載形式:種不同的重載形式:第第1種:通過種:通過

15、url指定的數據庫建立連接,其語法原型為:指定的數據庫建立連接,其語法原型為: static Connection getConnection(String url)第第2種:通過種:通過url指定的數據庫建立連接,指定的數據庫建立連接,info提供了一些屬性,提供了一些屬性,這些屬性里包括了這些屬性里包括了user和和password等屬性,其語法原型為:等屬性,其語法原型為: static Connection getConnection(String url,Properties info);第第3種:傳入參數用戶名為種:傳入參數用戶名為user,密碼為,密碼為password,通過,通

16、過url指指定的數據庫建立連接,其語法原型為:定的數據庫建立連接,其語法原型為: static Connection getConnection(String url,String user,String password):3.利用利用JDBC連接連接MySQL數據庫,獲取連接對象的通用格數據庫,獲取連接對象的通用格式式 設設MySQL數據庫為:數據庫為:“students”,用戶名為,用戶名為“root”,密碼為,密碼為“123456”,數據庫讀寫的編碼采用,數據庫讀寫的編碼采用UTF-8,連接格式:,連接格式:String driverName = com.mysql.jdbc.Driv

17、er; /驅動程序名驅動程序名String userName = root; /數據庫用戶名數據庫用戶名String userPwd = 123456; /密碼密碼String dbName = students; /數據庫名數據庫名String url1=jdbc:mysql:/localhost:3306/+dbName;String url2 =?user=+userName+&password=+userPwd;String url3=&useUnicode=true&characterEncoding=UTF-8;String url =url1+url2+u

18、rl3; /形成連接字形成連接字Class.forName(driverName); /加載并注冊驅動程序加載并注冊驅動程序/獲取數據庫連接對象獲取數據庫連接對象Connection conn=DriverManager.getConnection(url); 4.2.3 創建數據庫的操作對象 數據庫的操作對象是指能執行SQL語句的對象,需要Connection類中創建數據庫的操作對象的方法實現創建。 可創建兩種不同的數據庫操作對象: Statement對象、PrepareStatement對象。1創建創建Statement對象對象 利用Connection類的方法createStatemen

19、t()可以創建一個Statement類實例,用來執行SQL操作。 例如,假設通過數據庫連接,得到其連接對象為conn,那么,可創建Statement的一個實例stmt: Statement stmt = conn.createStatement(); 2創建創建PrepareStatement對象對象(1)PreparedStatement對象使用PreparedStatement()方法創建,并且在創建時直接指定SQL語句。例如: String sql=select * from stu_info PreparedStatement pstmt= conn.preparedStatement

20、(sql); (2)使用帶參數的SQL語句(“?”表示參數值),創建PreparedStatement對象。例如: String ss=select * from stu_info where age=? and sex=?; PreparedStatement pstmt= conn.preparedStatement(ss); 但在SQL語句中,沒有指定具體的年齡和性別,在實際執行該SQL前,需要向PreparedStatement對象傳遞參數值。設置參數值的格式為: PreparedStatement對象.setXXX(position,value);4.2.4 執行SQL 創建操作對象

21、后,就可以利用該對象,實現對數據庫的具體操作,即執行SQL語句。1. Statement對象執行對象執行SQL語句語句 Statement主要提供了兩種執行SQL語句的方法:(1)ResultSet executeQuery(String sql): 執行select語句,返回一個結果集。(2)int executeUpdate(String sql): 執行update、insert、delete,返回一個整數,表示執行SQL語句影響的數據行數。2 . PreparedStatemen對象執行對象執行SQL語句語句 PreparedStatement也有ResultSet executeQu

22、ery()和int executeUpdate()兩個方法,但都不帶參數。PreparedStatement兩種執行SQL語句的方法:(1)ResultSet executeQuery(): 執行select語句,返回一個結果集。(2)int executeUpdate(): 執行update、insert、delete的SQL語句。它返回一個整數,表示執行SQL語句影響的數據行數。4.2.5 獲得查詢結果并進行處理 如果SQL語句是查詢語句,執行executeQuery()方法返回的是ResultSet對象。ResultSet對象是一個由查詢結果構成的數據表。 對查詢結果的處理,一般需要,首

23、先定位記錄位置,然。后對確定記錄的字段項實現操作。1記錄定位操作記錄定位操作 在ResultSet結果記錄集中隱含著一個數據行指針,可使用4.1節中表4-5中的方法將指針移動到指定的數據行。2.讀取指定字段的數據操作讀取指定字段的數據操作 有兩種格式,一是用整數指定字段的索引(索引從1開始),二是用字段名來指定字段。下表列出采用“指定字段的索引號”獲取各種類型的字段值的方法。方法名稱方法說明boolean getBoolean(int ColumnIndex)返回指定字段的以Java的booelan類型表示的字段值String getString(int ColumnIndex)返回指定字段的

24、以Java的String類型表示的字段值byte getByte(int ColumnIndex)返回指定字段的以Java的byte類型表示的字段值short getShort(int ColumnIndex)返回指定字段的以Java的short類型表示的字段值int getInt(int ColumnIndex)返回指定字段的以Java的int類型表示的字段值long getLong(int ColumnIndex)返回指定字段的以Java的long類型表示的字段值float getFloat(int ColumnIndex)返回指定字段的以Java的float類型表示的字段值double

25、getDouble(int ColumnIndex)返回指定字段的以Java的Double類型表示的字段值byte getBytes(int ColumnIndex)返回指定字段的以Java的字節數組類型表示的字段值Date getDate(int ColumnIndex)返回指定字段的以Java.sql.Date的Date類型表示的字段值3修改指定字段的數據操作修改指定字段的數據操作 移到指定的數據行后,可使用updateXxx()方法設置字段新的數值,其中“Xxx”指的是Java的數據類型。方法的參數也有兩種格式,一是用整數指定字段的索引(索引從1開始),二是用字段名來指定字段。格式: u

26、pdateXxx(字段名或字段序號,新數值)例如: 對數據表stu,其中的字段是xh(學號,字符串),name(姓名,字符串),cj(成績,整型),并且查詢結果集為rs,則對數據表stu當前記錄中成績改為90,則需要執行:String sql=select xh,name,cj from stu;RrsultSet rs=stmt.executeQuery(sql); rs.updateInt(3,90); /或rs.updateInt(cj,90);4.2.6 釋放資源 當完成對數據庫記錄的一次操作后,應及時關閉這些對象并釋放資源。 假設建立的對象依次為:連接對象為conn(Connecti

27、on conn),操作對象為pstmt (PreparedStatement pstmt),得到的查詢結果集對象為rs(RrsultSet rs),則需要依次關閉的對象是:rs.close();stmt.close();con.close();4.2.7 數據庫亂碼解決方案 在實現對數據庫操作時,對于漢字信息,有時不能正確處理,其原因是由于漢字編碼的不同所造成的。為了正確處理漢字信息,必須使漢字編碼使用統一的編碼格式。漢字編碼,目前主要使用UTF-8和GB2312。本教材中統一使用UTF-8編碼。在設計Web應用程序時,涉及到漢字信息編碼的組件主要有: (1)數據庫和數據表建立時,所建立的數據

28、庫和數據表及其各字段的編碼格式。(2)對數據庫中記錄的讀寫訪問所采用的編碼格式。(3)在JSP頁面之間傳遞參數(request對象)時,其漢字編碼格式。(4)在JSP頁面(HTML頁面)本身中漢字編碼格式。(5)由服務器響應(response),返回到客戶端的信息編碼格式。 在所設計應用程序時,需要將這幾部分的編碼格式統一為一種漢字編碼方式,就可以解決漢字亂碼問題。4.3 綜合案例 學生身體體質信息管理系統的開發【案例說明】描述一個學生身體體質的信息有:有id(序號,整型),name(姓名,字符串),sex(性別,字符串),age(年齡,整型),weight(體重,實型),hight(身高,實

29、型)。存放學生體質信息的數據庫為students,數據表為stu_info。要求,利用JDBC技術實現對學生身體體質信息的管理。 該問題是一個簡單的數據庫信息管理系統,基本操作主要有:數據庫和數據表的建立;數據庫記錄信息的添加(插入);數據庫記錄信息的查詢;數據庫記錄信息的刪除;數據庫記錄信息的修改。1.功能劃分功能劃分 整個系統的業務邏輯,可以分為4個功能模塊:(1)添加記錄模塊:完成向數據庫添加新記錄。(2)查詢記錄模塊:完成將數據庫的記錄以網頁的方式顯示出來,一般需要采用有條件的查詢。(3)修改記錄模塊:完成對指定條件的數據庫記錄實現修改。(4)刪除記錄模塊:完成對指定條件記錄從數據庫中

30、刪除。2每個模塊的操作流程每個模塊的操作流程 對數據庫記錄的每種操作,需要的操作步驟是:(1)注冊驅動,并建立數據庫的連接;(2)創建執行SQL的語句;(3)執行語句;(4)處理執行結果;(5)釋放資源; 下面按各功能模塊和實現操作步驟,分別給出其設計思想和設計過程。設計過程:4.3.1 數據庫和數據表的建立4.3.2 注冊驅動并建立數據庫的連接4.3.3 添加記錄模塊的設計與實現4.3.4 查詢記錄模塊的設計與實現4.3.5 修改記錄模塊的設計與實現4.3.6 刪除記錄模塊的設計與實現4.3.7 數據庫操作的模板4.3.8 整合各設計模塊形成完整的應用系統4.3.9 問題與思考4.3.1 數

31、據庫和數據表的建立 該系統需要創建一個數據庫以及該庫中的一個數據表在MySQL中創建一個數據庫:students,并在數據庫students中創建表students_info。字段中文描述數據類型是否為空id學生學號int否name學生名字Varchar(20)是sex性別Varchar(4)是age年齡int是weight體重double是hight身高double是數據庫和數據表的建立代碼4.3.2 注冊驅動并建立數據庫的連接 對數據庫進行查詢、添加、刪除、修改等操作時,都必須通過JDBC建立應用程序與數據庫的連接,在本小節中給出實現“注冊驅動并建立數據庫的連接”的公共代碼。 連接數據庫時

32、,一般需要指定數據庫讀寫的編碼,這里采用“UTF-8”編碼。 實現注冊驅動并建立數據庫的連接的關鍵代碼段。4.3.3 添加記錄模塊的設計與實現【例4-1】利用PreparedStatement對象實現在數據庫中插入一條記錄。其相應的記錄信息是:序號、姓名、性別、年齡、體重、身高,分別為:16、“張三”、“男”、20、70.0、175?!痉治觥渴褂肞reparedStatement對象向數據庫中插入(添加)記錄,其處理步驟:(1)建立數據庫的連接。(2)形成SQL語句(可以帶參數,也可以不帶參數)。(3)利用連接對象建立PreparedStatement對象。(4)若是帶參數的SQL執行語句,則

33、需要對各參數設置相應的參數值。(5)調用PreparedStatement對象,執行executeUpdate()方法。(6)根據executeUpdate()方法返回的整數,判定是否執行成功,如果大于0表示成功,否則執行失敗。(7)關閉所有資源?!驹O計與實現】源代碼 【運行】 程序運行 【例4-2】設計程序,實現利用提交頁面提交要添加的學生信息。然后進入添加處理程序實現將信息添加到數據庫?!痉治龇治觥啃枰獌蓚€JSP程序,程序insert_stu_2_tijiao.jsp將提交信息存放到request對象中,而程序insert_stu_2.jsp從request對象中獲取數據,形成插入記錄的S

34、QL語句,并實現插入。request對象insert_stu_2.jspinsert_stu_2_tijiao.jsp【設計關鍵】【設計關鍵】(1)該例題有兩個組件,其關鍵是實現這兩個組件之間的數據共享,即,使用request對象實現兩個頁面信息的共享,分別使用了id,name,sex,age,weight,hight等變量。(2)在添加處理頁面,設置查詢參數值時,必須注意各字段的數據類型,不同的類型采用不同的設置方法。【實現】(1)提交頁面程序insert_stu_2_tijiao.jsp (2)插入記錄程序insert_stu_2.jsp【運行】 程序運行 4.3.4 查詢記錄模塊的設計與

35、實現【例4-3】采用PreparedStatement的對象實現記錄的查詢操作,要求查詢表stu_info中的所有學生信息并顯示在網頁上?!痉治觥渴褂肞reparedStatement對象實現數據庫查詢,其處理步驟:(1)建立數據庫的連接。(2)形成查詢SQL語句(可以帶參數,也可以不帶參數。)(3)利用連接對象建立PreparedStatement對象。(4)若是帶參數的SQL執行語句,則需要對各參數設置相應的參數值(若SQL語句不帶參數,該步可以?。?。(5)再調用PreparedStatement對象的executeQuery()方法,并返回ResultSet對象。(6)對所得到的Resu

36、ltSet對象中的各記錄依次進行處理。(7)關閉所有資源?!驹O計關鍵】該題目要求是顯示出所有的記錄,對于查詢SQL語句不需要參數,其查詢語句為:String sql=select * from stu_info 另外,對于獲得的查詢結果集ResultSet中每條記錄的處理方式,在本例中采用HTML的表格標簽實現數據的顯示。【實現】源代碼【運行】 程序運行 【例4-4】采用PreparedStatement的對象實現有條件的查詢操作,要求在表stu_info中,查詢出體重介于60至80之間的所有同學并在網頁上顯示?!痉治觥科涮幚聿襟E與例4-3的處理步驟一樣,這里采用帶參數的查詢SQL語句。【設計

37、關鍵】該例題的設計關鍵是查詢SQL語句的形成,即:String sql=select * from stu_info where weight=? and weight=60 and weight=?;另外,對于該題目,其條件是固定的,其參數值的設置是:pstmt.setFloat(1,80);【實現】源代碼【運行】 程序運行 【例4-9】對數據庫students中的數據表stu_info,刪除滿足條件(由提交頁面提供)的所有記錄。【分析】該例題要2個組件,一個是delete_stu_2_tijiao.jsp,實現條件的提交;第二個是delete_stu_2.jsp,刪除滿足條件的所有記錄。r

38、equest對象delete_stu_2.jspdelete_stu_2_tijiao.jsp【設計關鍵】(1)該例題需要在2個頁面之間共享信息,需要使用JSP內置對象request實現共享。為了簡化設計,按“姓名”、“性別”、“體重范圍段”設置查詢條件。(2)在提交頁面,提交信息可以是“空值”,表示該字段不受限制。(3)在查詢處理頁面,設置查詢參數值時,必須注意各字段的數據類型。【實現】 (1)delete_stu_2_tijiao.jsp,實現條件的提交; (2)delete_stu_2.jsp,刪除滿足條件的所有記錄【運行】程序運行4.3.7 數據庫操作的模板“數據庫操作的模板”代碼。實

39、現數據庫的添加、查詢、修改、刪除操作。由于實現數據庫操作,存在數據庫連接等各種異常,通常需要異常處理,其數據庫操作的通用結構。4.3.8 整合各設計模塊形成完整的應用系統 系統的應用界面如圖4-10所示。頁面的左部分是操作功能菜單選項,當單擊某選項時,會相應的執行該選項的功能,圖4-10所示是選擇“按條件修改學生”后所顯示的網頁界面。功能模塊劃分:1.列出全部學生模塊:該功能模塊在【例4-3】中已實現,其程序為find_stu_1.jsp。2.按條件查詢學生模塊:該功能模塊在【例4-5】中已實現,其程序為find_stu_3_tijiao.jsp和find_stu_3.jsp。3新添加學生模塊

40、:該功能模塊在【例4-2】中已實現,其程序為insert_stu_2_tijiao.jsp和insert_stu_2.jsp。4按條件刪除學生模塊:該功能模塊在【例4-9】中已實現,其程序為delete_stu_2_tijiao.jsp和delete_stu_2.jsp。5按條件修改學生模塊:該功能模塊在【例4-7】中已實現,其程序為update_stu_2_tijiao.jsp、update_stu_2_edit.jsp、update_stu_2.jsp。6主頁面框架的設計 該應用系統的主頁面框架如圖4-10所示,由3部分組成: 最上方的顯示標題部分(index_title.jap), 左邊

41、的顯示操作菜單的顯示(index_stu_left.jsp), 右邊顯示運行界面部分(index_stu_right.jsp), 另外,由這3部分組合形成主頁面的程序(index_stu.jsp)。設計過程與源代碼設計過程與源代碼運行程序運行程序4.4 數據源與連接池技術 使用連接池技術連接數據庫需要兩步處理:首先配置數據源,然后在程序中通過連接池建立數據庫的連接,從而再訪問數據庫。本節主要內容:4.4.1 配置數據源4.4.2 使用連接池技術訪問數據庫處理步驟4.4.3 連接池應用 學生身體體質信息顯示模塊的設計與實現4.4.4 問題與思考4.4.1 配置數據源 在通過連接池技術訪問數據庫時

42、,首先需要Web服務器下配置數據庫連接池。 下面以MySQL數據庫為例介紹在服務器Tomcat下配置數據庫連接池的方法。1在服務器上添加在服務器上添加MySQL數據庫驅動程序數據庫驅動程序 將MySQL數據庫的驅動程序復制到Tomcat安裝路徑下的commonlib文件夾中。2數據源參數配置數據源參數配置 在Web工程目錄下的META-INFcontext.xml文件中,若在Web工程目錄下META-INF不存在context.xml文件,則需要自己建立該文件。配置數據源的具體代碼如下: 配置數據源時需要配置的元素的屬性及其說明屬性名稱說 明name設置數據源的JNDI名type設置數據源的類型auth設置數據源的管理者,有兩個可選值Container和Application,Container表示由容器來創建和管理數據源,Application表示由Web應用來創建和管理數據源dri

溫馨提示

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

評論

0/150

提交評論