JSP与JDBC建立网页库课件.ppt
《JSP与JDBC建立网页库课件.ppt》由会员分享,可在线阅读,更多相关《JSP与JDBC建立网页库课件.ppt(64页珍藏版)》请在三一办公上搜索。
1、第11章 JSP與JDBC建立網頁資料庫,11-1 JDBC的基礎11-2 建立MySQL的資料庫連結11-3 建立Access的資料庫連結11-4 JSP的資料庫基本存取11-5 SQL語言的資料庫查詢11-6 SQL語言的資料庫操作11-7 JNDI與連結池11-8 JSTL的資料庫存取標籤庫,第11章 JSP與JDBC建立網頁資料庫11-1 JDBC的,11-1 JDBC的基礎-說明,昇陽公司提出的資料庫中介軟體(Middleware)稱為JDBC(Java Database Connectivity),這是一種開放標準的Java程式介面,可以讓Java程式連接資料庫管理系統,以Java
2、技術來說,就是實作JDBC驅動程式介面(JDBC Driver Interface)的類別,即JDBC AP即JDBC API。,11-1 JDBC的基礎-說明昇陽公司提出的資料庫中介軟體(,11-1 JDBC的基礎-圖例,11-1 JDBC的基礎-圖例,11-1 JDBC的基礎-驅動程式種類,JDBC-ODBC橋接驅動程式(JDBC-ODBC Bridge):Java程式不是直接連接資料庫管理系統,而是透過微軟ODBC的中介軟體來存取資料庫。原生API的Java驅動程式(A Native-API Partly Java Driver):將Java程式的JDBC呼叫轉換成專屬資料庫管理系統的原
3、生API呼叫。Java網路協定驅動程式(A Net-protocol All Java Driver):將Java程式的JDBC呼叫轉換成資料庫管理系統專屬的網路協定,再由伺服器轉換成資料庫管理系統的API呼叫。Java原生通訊協定驅動程式(A Native-protocol All Java Driver):將Java程式的JDBC呼叫直接轉換成資料庫管理系統原生通訊協定的API呼叫,以便客戶端直接連線資料庫伺服器。,11-1 JDBC的基礎-驅動程式種類JDBC-ODBC橋接,11-2 建立MySQL的資料庫連結,11-2-1 安裝MySQL的JDBC驅動程式11-2-2 使用JDBC連結
4、MySQL資料庫,11-2 建立MySQL的資料庫連結11-2-1 安裝MyS,11-2-1 安裝MySQL的JDBC驅動程式,MySQL資料庫系統支援JDBC的Java原生通訊協定驅動程式,稱為MySQL Connector/J,我們可以在MySQL網站免費下載,目前版本是3.0版,在JSP的Web應用程式安裝MySQL Connector/J,其步驟如下所示:1. 使用解壓縮工具從壓縮檔取出JAR檔案:mysql-connector-java-3.0.16-ga-bin.jar。2. 將JAR檔案複製Web應用程式的WEB-INFlib資料夾,以本章的Ch11應用程式為例,其完整路徑為C:
5、InetpubwwwrootCh11WEB-INFlib。,11-2-1 安裝MySQL的JDBC驅動程式MySQL資料,11-2-2 使用JDBC連結MySQL資料庫-說明,在安裝好MySQL的JDBC驅動程式後,JSP程式就可以使用JDBC建立資料庫連結,然後透過JDBC API執行SQL指令來存取資料庫的記錄資料。,11-2-2 使用JDBC連結MySQL資料庫-說明在安裝好,11-2-2 使用JDBC連結MySQL資料庫-步驟一,步驟一:載入驅動程式在JSP程式首先需要載入JDBC驅動程式,如下所示:String sDriver = com.mysql.jdbc.Driver;Clas
6、s.forName(sDriver);上述程式碼的字串sDriver是驅動程式名稱com.mysql.jdbc.Driver,接著使用Class類別方法forName()方法載入驅動程式。,11-2-2 使用JDBC連結MySQL資料庫-步驟一步驟一,11-2-2 使用JDBC連結MySQL資料庫-步驟二,步驟二:建立Connection連結物件在載入JDBC驅動程式後,就可以使用DriverManager類別的getConnection()類別方法建立Connection物件dbCon,如下所示:sCon = jdbc:mysql:/localhost:3306/school?user=ro
7、ot,11-2-2 使用JDBC連結MySQL資料庫-步驟二步驟二,11-2-2 使用JDBC連結MySQL資料庫-步驟三,步驟三:建立JDBC的Statement物件Statement物件的目的是執行SQL指令,在建立好Connection物件後,就可以使用createStatement()方法建立Statement物件,如下所示:stmt = dbCon.createStatement();,11-2-2 使用JDBC連結MySQL資料庫-步驟三步驟三,11-3 建立Access的資料庫連結,11-3-1 JDBC-ODBC資料庫連結的基礎11-3-2 建立資料庫與系統資料來源11-3-3
8、 使用JDBC-ODBC連結Access資料庫,11-3 建立Access的資料庫連結11-3-1 JDBC,11-3-1 JDBC-ODBC資料庫連結的基礎-說明,Access並不支援JDBC驅動程式。所以JSP程式需要使用JDBC的JDBC-ODBC橋接驅動程式,透過JDBC-ODBC驅動程式存取ODBC資料來源的Access資料庫。ODBC(Object Database Connectivity)是微軟開發的中介軟體,提供Windows作業系統的應用程式一種標準的資料庫存取方式,能夠存取位在其它電腦上執行的資料庫系統。,11-3-1 JDBC-ODBC資料庫連結的基礎-說明Acc,11
9、-3-1 JDBC-ODBC資料庫連結的基礎-圖例,11-3-1 JDBC-ODBC資料庫連結的基礎-圖例,11-3-2 建立資料庫與系統資料來源-建立Access資料庫,Access資料庫是學校資料庫School.mdb,在School.mdb資料庫擁有Students資料表,其欄位說明,如下表所示:,11-3-2 建立資料庫與系統資料來源-建立Access資料,11-3-2 建立資料庫與系統資料來源-新增ODBC系統資料來源,在Access建立好資料庫後,就可以在Windows作業系統建立ODBC系統資料來源,筆者準備在Windows XP作業系統的電腦新增Access資料庫School.
10、mdb名為【school_db】的ODBC系統資料來源,如右圖所示:,11-3-2 建立資料庫與系統資料來源-新增ODBC系統資料,11-3-3 使用JDBC-ODBC連結Access資料庫-載入驅動程式,載入JDBC-ODBC驅動程式在JSP程式載入的驅動程式是透過ODBC存取資料庫,所以載入JDBC-ODBC驅動程式,如下所示:String sDriver = sun.jdbc.odbc.JdbcOdbcDriver;Class.forName(sDriver);上述程式碼的字串sDriver是驅動程式名稱sun.jdbc.odbc.JdbcOdbcDriver,接著載入JDBC-ODBC
11、驅動程式。,11-3-3 使用JDBC-ODBC連結Access資料庫-,11-3-3 使用JDBC-ODBC連結Access資料庫-JDBC URL,JDBC URL位址字串在載入JDBC-ODBC驅動程式後,就可以使用DriverManager類別的getConnection()類別方法建立Connection物件dbCon,如下所示:String sCon = jdbc:odbc:school_db;dbCon = DriverManager.getConnection(sCon);,11-3-3 使用JDBC-ODBC連結Access資料庫-,11-4 JSP的資料庫基本存取,11-4
12、-1 取得資料表的資訊11-4-2 顯示資料表的記錄資料11-4-3 使用JDBC連結MySQL資料庫的中文問題,11-4 JSP的資料庫基本存取11-4-1 取得資料表的資,11-4-1 取得資料表的資訊-步驟四,取得資料表資訊是繼續第11-2-2節的步驟三。步驟四:使用Statement物件執行SQL指令在前面已經說過,建立Statement物件的目的是執行SQL指令,如下所示:String sSQL=SELECT * FROM students;boolean state = stmt.execute(sSQL);,11-4-1 取得資料表的資訊-步驟四取得資料表資訊是繼續第,11-4-
13、1 取得資料表的資訊-步驟五,步驟五:取得ResultSet和ResultSetMetaData物件在使用Statement物件執行SQL指令後,接著可以使用getResultSet()方法取得ResultSet物件,如下所示:ResultSet rs = stmt.getResultSet();上述程式碼在取得ResultSet物件後,再使用getMetaData()方法取得ResultSetMetaData物件,如下所示:ResultSetMetaData md = rs.getMetaData();在取得ResultSetMetaData物件後,就可以使用相關方法取得資料表的相關資訊。,
14、11-4-1 取得資料表的資訊-步驟五步驟五:取得Resul,11-4-1 取得資料表的資訊-方法,ResultSetMetaData物件的相關方法,如下表所示:,11-4-1 取得資料表的資訊-方法ResultSetMet,11-4-2 顯示資料表的記錄資料-步驟四,在這一節筆者準備執行SQL查詢指令取得資料表的記錄資料,步驟是繼續第11-2-2節的步驟三。步驟四:使用Statement物件執行SQL指令在JSP程式執行SQL查詢指令可以取得查詢結果的ResultSet物件,這是使用executeQuery()方法取得ResultSet物件,如下所示:rs = stmt.executeQue
15、ry(sSQL);程式碼取得參數SQL指令sSQL查詢結果的ResultSet物件rs,參數的SQL查詢指令可以取得資料表students的所有記錄。,11-4-2 顯示資料表的記錄資料-步驟四在這一節筆者準備執,11-4-2 顯示資料表的記錄資料-步驟五,步驟五:使用迴圈取得ResultSet物件的記錄在取得查詢結果的ResultSet物件後,可以使用while迴圈配合next()方法來顯示記錄,如下所示:while ( rs.next() ) out.print(rs.getString(stdno); out.print(rs.getString(name); out.print(rs.
16、getString(address); out.print(rs.getDate(birthday); out.print(rs.getInt(totalcredit);,11-4-2 顯示資料表的記錄資料-步驟五步驟五:使用迴圈取,11-4-2 顯示資料表的記錄資料-步驟五,步驟六:關閉連結的Connection和Statement物件在處理完資料庫的查詢或操作後,JSP程式需要關閉Connection和Statement物件,使用的都是close()方法,如下所示:stmt.close();dbCon.close();,11-4-2 顯示資料表的記錄資料-步驟五步驟六:關閉連結的,11-4
17、-3 使用JDBC連結MySQL資料庫的中文問題-編碼,指定JDBC驅動程式的編碼在載入JDBC驅動程式時,JSP程式需要指定編碼參數來連結MySQL資料庫,如下所示:String sCon = jdbc:mysql:/localhost:3306/school?user=root上述JDBC驅動程式設定useUnicode和characterEncoding屬性值為true和MS950,使用Unicode的MS950編碼。,11-4-3 使用JDBC連結MySQL資料庫的中文問題-編,11-4-3 使用JDBC連結MySQL資料庫的中文問題-Unicode字串1,將中文欄位值轉換成Unico
18、de字串在JSP程式顯示透過JDBC取得MySQL資料庫的中文記錄資料時,因為JDBC驅動程式在轉換中文內碼時,一個中文字會被切割成2個字元,例如:0 x4175會切割成0 x41和0 x75。所以,JSP程式在顯示中文的記錄資料時,需要先將欄位字串還原成完整中文內碼的Unicode字串,這就是toUnicode()方法的功能。,11-4-3 使用JDBC連結MySQL資料庫的中文問題-U,11-4-3 使用JDBC連結MySQL資料庫的中文問題-Unicode字串2,String toUnicode(String s) if (s = null | s.length() = 0) retur
19、n null; byte buffer = new bytes.length(); int i, j; for (i = 0, j = 0; i = 0 x100 ) char c = (char) s.charAt(i); byte buf = (+c).getBytes(); bufferj+ = (byte) buf0; bufferj+ = (byte) buf1; else bufferj+ = (byte) s.charAt(i); return new String(buffer,0,j); ,11-4-3 使用JDBC連結MySQL資料庫的中文問題-U,11-4-3 使用JDB
20、C連結MySQL資料庫的中文問題-表單資料編碼,指定表單傳送資料的編碼當SQL指令或欄位值使用表單方式傳遞中文內容給JSP程式時,在JSP程式需要指定傳送的編碼方式,如下所示:request.setCharacterEncoding(MS950);上述程式碼使用request物件的setCharacterEncoding()方法指定傳送的編碼方式為MS950,這和JDBC驅動程式的編碼相同,如此JSP程式才能送出正確的SQL指令,將中文欄位內容存入資料庫。,11-4-3 使用JDBC連結MySQL資料庫的中文問題-表,11-5 SQL語言的資料庫查詢,11-5-1 分頁顯示SQL查詢結果11-
21、5-2 SQL語言的基礎11-5-3 SQL查詢指令 - SELECT,11-5 SQL語言的資料庫查詢11-5-1 分頁顯示SQL,11-5-1 分頁顯示SQL查詢結果-建立Statement物件,建立分頁顯示的Statement物件因為ResultSet物件的記錄資料需要使用相關方法來移動記錄指標,如此才能分頁顯示查詢結果,所以在使用Connection物件的方法建立Statement物件時,需要設定指標型態和同步等級,如下所示:stmt = dbCon.createStatement( ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR
22、_READ_ONLY);,11-5-1 分頁顯示SQL查詢結果-建立Statement,11-5-1 分頁顯示SQL查詢結果-移動記錄指標的方法,ResultSet物件移動記錄指標的相關方法,11-5-1 分頁顯示SQL查詢結果-移動記錄指標的方法Re,11-5-1 分頁顯示SQL查詢結果-分頁顯示1,當JSP程式分頁顯示SQL查詢結果時,首先需要計算出ResultSet物件的記錄總數,如下所示:rs.last();int totalRecords = rs.getRow();在取得記錄總數後,即可計算出這些記錄一共可以分成幾頁來顯示,如下所示:totalPages = totalRecord
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- JSP JDBC 建立 网页 课件

链接地址:https://www.31ppt.com/p-1285883.html