![學(xué)生管理系統(tǒng)登錄模塊項目開發(fā)_第1頁](http://file3.renrendoc.com/fileroot_temp3/2022-6/3/780d9c5e-3993-448c-83c9-bc29b315024d/780d9c5e-3993-448c-83c9-bc29b315024d1.gif)
![學(xué)生管理系統(tǒng)登錄模塊項目開發(fā)_第2頁](http://file3.renrendoc.com/fileroot_temp3/2022-6/3/780d9c5e-3993-448c-83c9-bc29b315024d/780d9c5e-3993-448c-83c9-bc29b315024d2.gif)
![學(xué)生管理系統(tǒng)登錄模塊項目開發(fā)_第3頁](http://file3.renrendoc.com/fileroot_temp3/2022-6/3/780d9c5e-3993-448c-83c9-bc29b315024d/780d9c5e-3993-448c-83c9-bc29b315024d3.gif)
![學(xué)生管理系統(tǒng)登錄模塊項目開發(fā)_第4頁](http://file3.renrendoc.com/fileroot_temp3/2022-6/3/780d9c5e-3993-448c-83c9-bc29b315024d/780d9c5e-3993-448c-83c9-bc29b315024d4.gif)
![學(xué)生管理系統(tǒng)登錄模塊項目開發(fā)_第5頁](http://file3.renrendoc.com/fileroot_temp3/2022-6/3/780d9c5e-3993-448c-83c9-bc29b315024d/780d9c5e-3993-448c-83c9-bc29b315024d5.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、學(xué)生管理系統(tǒng)登錄子模塊開發(fā)學(xué)生管理系統(tǒng)登錄子模塊開發(fā)安徽工商職業(yè)學(xué)院電子系安徽工商職業(yè)學(xué)院電子系開發(fā)任務(wù)開發(fā)任務(wù)開發(fā)學(xué)生管理系統(tǒng)登錄子模塊完成如下功能:開發(fā)學(xué)生管理系統(tǒng)登錄子模塊完成如下功能:把登錄頁的用戶登錄信息發(fā)送到我們設(shè)計好的信息校驗頁把登錄頁的用戶登錄信息發(fā)送到我們設(shè)計好的信息校驗頁連接后臺數(shù)據(jù)庫,驗證用戶的登錄信息連接后臺數(shù)據(jù)庫,驗證用戶的登錄信息對驗證結(jié)果進行服務(wù)器跳轉(zhuǎn)處理對驗證結(jié)果進行服務(wù)器跳轉(zhuǎn)處理防止匿名用戶的惡意登陸防止匿名用戶的惡意登陸使用使用Cookie技術(shù)保存用戶的登錄信息,使用戶不用輸入賬戶技術(shù)保存用戶的登錄信息,使用戶不用輸入賬戶密碼直接登錄密碼直接登錄掌握掌握Fr
2、om表單的發(fā)送信息方式表單的發(fā)送信息方式掌握掌握Request對象獲取用戶填寫的登錄信息對象獲取用戶填寫的登錄信息掌握如何連接數(shù)據(jù)庫(兩種方法、四種數(shù)據(jù)庫)掌握如何連接數(shù)據(jù)庫(兩種方法、四種數(shù)據(jù)庫)掌握如何對用戶登錄信息進行校驗掌握如何對用戶登錄信息進行校驗開發(fā)重點開發(fā)重點熟練掌握熟練掌握JDBC-ODBC連接數(shù)據(jù)庫,數(shù)據(jù)庫文件路徑連接數(shù)據(jù)庫,數(shù)據(jù)庫文件路徑的獲取的獲取深刻理解匿名惡意登錄的處理對策深刻理解匿名惡意登錄的處理對策熟練使用熟練使用Cookie存儲用戶的登錄信息存儲用戶的登錄信息掌握調(diào)用掌握調(diào)用Cookie中存儲的用戶信息的相關(guān)方法中存儲的用戶信息的相關(guān)方法開發(fā)難點開發(fā)難點項目前臺
3、界面設(shè)計復(fù)習(xí)項目前臺界面設(shè)計復(fù)習(xí)項目前臺界面設(shè)計復(fù)習(xí)項目前臺界面設(shè)計復(fù)習(xí)套用現(xiàn)有模板進行設(shè)計(企業(yè)開發(fā)模板最好)套用現(xiàn)有模板進行設(shè)計(企業(yè)開發(fā)模板最好)使用使用FireworksCS4進行切片設(shè)計進行切片設(shè)計使用使用DreamweaverCS4進行布局設(shè)計進行布局設(shè)計使用使用IEtest軟件進行多瀏覽器測試。(企業(yè)級開發(fā)必軟件進行多瀏覽器測試。(企業(yè)級開發(fā)必備步驟)備步驟)項目前臺界面設(shè)計復(fù)習(xí)項目前臺界面設(shè)計復(fù)習(xí)前臺界面兩個細節(jié)的處理:前臺界面兩個細節(jié)的處理:如何將模板中文字、圖像進行移位處理如何將模板中文字、圖像進行移位處理背景圖像的漸進色處理(切片的選取、背景色的設(shè)置、背景圖像的漸進色處理
4、(切片的選取、背景色的設(shè)置、repeat參數(shù)的使用)參數(shù)的使用)項目前臺界面設(shè)計復(fù)習(xí)項目前臺界面設(shè)計復(fù)習(xí)經(jīng)過以上分析,基本上可以得到一個比較經(jīng)過以上分析,基本上可以得到一個比較“正常正?!钡牡捻撁?。希望同學(xué)們注意的是:頁面。希望同學(xué)們注意的是:前臺界面設(shè)計的美工很重要,內(nèi)容多而繁雜,有些操前臺界面設(shè)計的美工很重要,內(nèi)容多而繁雜,有些操作甚至遠遠超出了我們的課程范圍,本課程主要講解作甚至遠遠超出了我們的課程范圍,本課程主要講解的后臺程序的開發(fā),要努力學(xué)習(xí)后臺處理機制的設(shè)計。的后臺程序的開發(fā),要努力學(xué)習(xí)后臺處理機制的設(shè)計。在公司中一個正規(guī)的在公司中一個正規(guī)的WEB項目開發(fā),必須有三類人項目開發(fā),必
5、須有三類人員共同協(xié)作才能完成:員共同協(xié)作才能完成:前臺美工人員(藝術(shù)設(shè)計專業(yè)人員:對色彩敏感)前臺美工人員(藝術(shù)設(shè)計專業(yè)人員:對色彩敏感)后臺程序開發(fā)人員(主要負責(zé)內(nèi)部處理機制和服務(wù)器后臺程序開發(fā)人員(主要負責(zé)內(nèi)部處理機制和服務(wù)器處理)處理)數(shù)據(jù)庫設(shè)計人員(負責(zé)關(guān)系型數(shù)據(jù)庫的設(shè)計)數(shù)據(jù)庫設(shè)計人員(負責(zé)關(guān)系型數(shù)據(jù)庫的設(shè)計)本次項目開發(fā),同學(xué)們將會將這三類人員的角色全部本次項目開發(fā),同學(xué)們將會將這三類人員的角色全部體驗一遍。體驗一遍。后臺登陸流程圖后臺登陸流程圖login.jsp輸入帳號、密碼。輸入帳號、密碼。Logincheck.jsp進行驗證進行驗證根據(jù)驗證結(jié)果進行轉(zhuǎn)發(fā)根據(jù)驗證結(jié)果進行轉(zhuǎn)發(fā)Lo
6、gin.jsp(用戶登錄頁用戶登錄頁)Logincheck.jsp(用戶登錄信息校驗頁用戶登錄信息校驗頁)登錄成功頁登錄成功頁登錄失敗頁登錄失敗頁根據(jù)處理結(jié)果進行跳轉(zhuǎn)根據(jù)處理結(jié)果進行跳轉(zhuǎn) 后臺程序開發(fā)后臺程序開發(fā)-發(fā)送用戶登錄信息發(fā)送用戶登錄信息使用使用Form表單提交用戶的登錄信息表單提交用戶的登錄信息:(:(login.jsp) 使用使用request.getParameter()方法獲取用戶填寫的登方法獲取用戶填寫的登錄信息錄信息(logincheck.jsp) String name = request.getParameter(log_user); String pass =requ
7、est.getParameter(log_pass);后臺程序開發(fā)后臺程序開發(fā)-連接數(shù)據(jù)庫操作連接數(shù)據(jù)庫操作數(shù)據(jù)庫連接一般有3種方法:利用JDBC-ODBC(第一類)專用驅(qū)動程序(第二類)利用數(shù)據(jù)庫廠家提供的函數(shù)庫,直接編程。(很少使用)。(很少使用)連接效率增高JDBC是Java數(shù)據(jù)庫連接技術(shù)的簡稱,提供連接各種常用數(shù)據(jù)庫的能力。是一種用于執(zhí)行SQL語句的Java API,可以為多種關(guān)系數(shù)據(jù)庫提供統(tǒng)一的訪問接口。在這里我們介紹一種通用的數(shù)據(jù)庫連接方法:連接四種數(shù)據(jù)庫(ACCESS、MYSQL、SQLSERVER、ORACLE)為什么不直接使用為什么不直接使用ODBCODBC不適合在Java中
8、直接使用:ODBC是一個C語言實現(xiàn)的API,從Java中調(diào)用本地的C程序在安全性、完整性、健壯性方面都有缺點。無法精確實現(xiàn)從ODBC API到Java API的翻譯(語言的限制:指針支持)。ODBC很難學(xué)不再是純JavaJDBC連接數(shù)據(jù)庫的兩大類基本操作連接數(shù)據(jù)庫的兩大類基本操作JDBC驅(qū)動由數(shù)據(jù)庫廠商驅(qū)動由數(shù)據(jù)庫廠商提供提供在個人開發(fā)與測試中,可以使用在個人開發(fā)與測試中,可以使用JDBC-ODBC橋連方式橋連方式在生產(chǎn)型開發(fā)中,推薦使用純在生產(chǎn)型開發(fā)中,推薦使用純Java驅(qū)動方式驅(qū)動方式JDBC APIJDBC Driver Manager純純Java 驅(qū)動驅(qū)動 JDBCODBC橋橋Java
9、 應(yīng)用程序應(yīng)用程序 ODBCJDBC程序的工作原理程序的工作原理JDBC API提供者:提供者:sun公司(公司(Oracle公司)公司)內(nèi)容:供程序員調(diào)用的接口與類,集成內(nèi)容:供程序員調(diào)用的接口與類,集成在在java.sql和和javax.sql包中,如:包中,如:DriverManager類類Connection接口接口Statement接口接口ResultSet接口接口DriverManager提供者:提供者:sun公司(公司(Oracle公司)公司)作用:載入各種不同的作用:載入各種不同的JDBC驅(qū)動驅(qū)動JDBC 驅(qū)動驅(qū)動提供者:數(shù)據(jù)庫廠商提供者:數(shù)據(jù)庫廠商作用:負責(zé)連接各種不同的數(shù)據(jù)
10、庫作用:負責(zé)連接各種不同的數(shù)據(jù)庫JDBC API JDBC Driver Manager JDBC 驅(qū)動驅(qū)動 JDBC 驅(qū)動驅(qū)動 Java 應(yīng)用程序應(yīng)用程序 JDBC APIJDBC API可做三件事:與數(shù)據(jù)庫建立連接、執(zhí)行可做三件事:與數(shù)據(jù)庫建立連接、執(zhí)行SQL 語句、處理結(jié)果語句、處理結(jié)果ConnectionDriverManagerPreparedStatementResultSet DriverManager :依據(jù)數(shù)據(jù)庫的不同,管理:依據(jù)數(shù)據(jù)庫的不同,管理JDBC驅(qū)動驅(qū)動 Connection :負責(zé)連接數(shù)據(jù)庫并擔(dān)任傳送數(shù)據(jù)的任務(wù):負責(zé)連接數(shù)據(jù)庫并擔(dān)任傳送數(shù)據(jù)的任務(wù) Prepared
11、Statement :由由 Connection 產(chǎn)生、負責(zé)執(zhí)行產(chǎn)生、負責(zé)執(zhí)行SQL語句語句 ResultSet:負責(zé)保存:負責(zé)保存Statement執(zhí)行后所產(chǎn)生的查詢結(jié)果執(zhí)行后所產(chǎn)生的查詢結(jié)果客戶端客戶端數(shù)據(jù)庫服務(wù)器數(shù)據(jù)庫服務(wù)器1234JDBC-ODBC方式連接方式連接Access數(shù)據(jù)庫數(shù)據(jù)庫橋連橋連將對將對JDBC API的調(diào)用,轉(zhuǎn)換為對另一組數(shù)據(jù)庫連接的調(diào)用,轉(zhuǎn)換為對另一組數(shù)據(jù)庫連接API的調(diào)用的調(diào)用優(yōu)點:可以訪問所有優(yōu)點:可以訪問所有ODBC可以訪問的數(shù)據(jù)庫可以訪問的數(shù)據(jù)庫缺點:執(zhí)行效率低、功能不夠強大(缺點:執(zhí)行效率低、功能不夠強大(Access例外)例外)JDBC-ODBC橋橋Ja
12、va 應(yīng)用程序應(yīng)用程序 JDBC APIODBC APIODBC層層課本上介紹的方式課本上介紹的方式使用使用JDBC-ODBC進行橋連進行橋連1、在控制面板、在控制面板ODBC數(shù)據(jù)源數(shù)據(jù)源系統(tǒng)系統(tǒng)DSN中配置數(shù)據(jù)源中配置數(shù)據(jù)源2、編程,通過橋連方式與數(shù)據(jù)庫建立連接、編程,通過橋連方式與數(shù)據(jù)庫建立連接-語法語法-Class.forName(sun.jdbc.odbc.JdbcOdbcDriver);Connection con =DriverManager.getConnection(jdbc:odbc:DataBase,);JDBC-ODBC橋驅(qū)動類橋驅(qū)動類的完全限定類名的完全限定類名數(shù)據(jù)源名
13、稱數(shù)據(jù)源名稱本項目推薦使用的方式本項目推薦使用的方式使用使用JDBC-ODBC進行橋連進行橋連1、定義基本的數(shù)據(jù)庫驅(qū)動信息與數(shù)據(jù)庫登錄信息、定義基本的數(shù)據(jù)庫驅(qū)動信息與數(shù)據(jù)庫登錄信息2、編程,數(shù)據(jù)庫建立連接、編程,數(shù)據(jù)庫建立連接-語法語法-public static final String DBDRIVER = sun.jdbc.odbc.JdbcOdbcDriver;public static String DBURL = jdbc:odbc:Driver=Microsoft Access Driver (*.mdb);DBQ=;public static final String DBUS
14、ER = ;public static final String DBPASS = ;Class.forName(DBDRIVER); conn = DriverManager.getConnection(URL, DBUSER, DBPASS);DBURL+真真實的路徑實的路徑本項目推薦使用的方式本項目推薦使用的方式使用使用JDBC-ODBC進行橋連進行橋連-語法語法-public static final String DBDRIVER = sun.jdbc.odbc.JdbcOdbcDriver;public static String DBURL = jdbc:odbc:Driver=
15、Microsoft Access Driver (*.mdb);DBQ=;public static final String DBUSER = ;public static final String DBPASS = ;Class.forName(DBDRIVER); conn = DriverManager.getConnection(URL, DBUSER, DBPASS);String dbpath = application.getRealPath(DatabaseDatabase.mdb);String URL = DBURL + dbpath;DBURL+真真實的路徑實的路徑JD
16、BC驅(qū)動驅(qū)動 連接數(shù)據(jù)庫連接數(shù)據(jù)庫純純Java驅(qū)動驅(qū)動由由JDBC驅(qū)動直接訪問數(shù)據(jù)庫驅(qū)動直接訪問數(shù)據(jù)庫優(yōu)點:優(yōu)點:100% Java,快又可跨平臺,快又可跨平臺缺點:訪問不同的數(shù)據(jù)庫需要下載專用的缺點:訪問不同的數(shù)據(jù)庫需要下載專用的JDBC驅(qū)動驅(qū)動JDBC 驅(qū)動驅(qū)動 Java 應(yīng)用程序應(yīng)用程序 JDBC API JDBC驅(qū)動驅(qū)動 連接數(shù)據(jù)庫連接數(shù)據(jù)庫使用純使用純Java驅(qū)動方式進行直連驅(qū)動方式進行直連1、下載數(shù)據(jù)庫廠商提供的驅(qū)動程序包、下載數(shù)據(jù)庫廠商提供的驅(qū)動程序包2、將驅(qū)動程序包引入工程中、將驅(qū)動程序包引入工程中3、編程,通過純、編程,通過純Java驅(qū)動方式與數(shù)據(jù)庫建立連接驅(qū)動方式與數(shù)據(jù)庫建
17、立連接4、基本書寫、基本書寫格式格式與與JDBC-ODBC方式完全方式完全一致一致-語法語法-public static final String DBDRIVER = “.;public static final String DBURL = “.”public static final String DBUSER = “;public static final String DBPASS = “.; Class.forName(DBDRIVER); conn = DriverManager.getConnection(DBURL, DBUSER, DBPASS);JDBC驅(qū)動驅(qū)動 連接連接
18、Oracle數(shù)據(jù)庫數(shù)據(jù)庫使用純使用純Java驅(qū)動方式進行直連驅(qū)動方式進行直連1、下載數(shù)據(jù)庫廠商提供的驅(qū)動程序包、下載數(shù)據(jù)庫廠商提供的驅(qū)動程序包 ojdbc12.jar2、將驅(qū)動程序包引入工程中、將驅(qū)動程序包引入工程中3、編程,通過純、編程,通過純Java驅(qū)動方式與數(shù)據(jù)庫建立連接驅(qū)動方式與數(shù)據(jù)庫建立連接-語法語法-public static final String DBDRIVER = “oracle.jdbc.driver.OracleDriver ;public static final String DBURL = “ jdbc:oracle:thin:localhost:1521:hu
19、yp”;public static final String DBUSER = “數(shù)據(jù)庫登錄用戶名(默認數(shù)據(jù)庫登錄用戶名(默認scott);public static final String DBPASS = “數(shù)據(jù)庫登錄用戶密碼(默認數(shù)據(jù)庫登錄用戶密碼(默認tiger); Class.forName(DBDRIVER); conn = DriverManager.getConnection(DBURL, DBUSER, DBPASS);IP端口號端口號用戶名用戶名JDBC驅(qū)動驅(qū)動 連接連接MYSQL數(shù)據(jù)庫數(shù)據(jù)庫使用純使用純Java驅(qū)動方式進行直連驅(qū)動方式進行直連1、下載數(shù)據(jù)庫廠商提供的驅(qū)動
20、程序包、下載數(shù)據(jù)庫廠商提供的驅(qū)動程序包 mysql-connector-java-5.1.7-bin.jar2、將驅(qū)動程序包引入工程中、將驅(qū)動程序包引入工程中3、編程,通過純、編程,通過純Java驅(qū)動方式與數(shù)據(jù)庫建立連接驅(qū)動方式與數(shù)據(jù)庫建立連接-語法語法-public static final String DBDRIVER = “com.mysql.jdbc.Driver ;public static final String DBURL = “jdbc:mysql:/localhost:3306/數(shù)據(jù)庫名稱數(shù)據(jù)庫名稱”;public static final String DBUSER =
21、 “數(shù)據(jù)庫登錄用戶名數(shù)據(jù)庫登錄用戶名;public static final String DBPASS = “數(shù)據(jù)庫登錄用戶密碼數(shù)據(jù)庫登錄用戶密碼; Class.forName(DBDRIVER); conn = DriverManager.getConnection(DBURL, DBUSER, DBPASS);六步使用六步使用 JDBC1. 加載加載 JDBC Driver2. 獲取獲取 與數(shù)據(jù)庫與數(shù)據(jù)庫 Connection3. 創(chuàng)建創(chuàng)建 PreparedStatement對象對象4. 執(zhí)行執(zhí)行 SQL語句語句5. 處理處理 ResultSet (針對查詢語句針對查詢語句)6. 關(guān)閉關(guān)
22、閉 ConnectionJDBC程序編寫過程程序編寫過程 JDBC程序的工作模板程序的工作模板try Class.forName(JDBC驅(qū)動類驅(qū)動類); catch (ClassNotFoundException e) System.out.println(無法找到驅(qū)動類無法找到驅(qū)動類);try Connection con=DriverManager.getConnection(JDBC URL,數(shù)據(jù)庫用戶名數(shù)據(jù)庫用戶名,密碼密碼); Statement stmt = con.createStatement(); ResultSet rs = stmt.executeQuery(SELEC
23、T a, b, c FROM Table1); while (rs.next() int x = rs.getInt(a); String s = rs.getString(b); float f = rs.getFloat(c); con.close(); catch (SQLException e) e.printStackTrace();獲得數(shù)據(jù)庫連接獲得數(shù)據(jù)庫連接發(fā)送發(fā)送Sql語句語句處理結(jié)果處理結(jié)果注冊注冊JDBC驅(qū)動驅(qū)動JDBC URL用來標識數(shù)據(jù)庫用來標識數(shù)據(jù)庫 必須處理的異常必須處理的異常釋放資源釋放資源必須處理的異常必須處理的異常1)加載加載 JDBC Driver使用使用D
24、riverManager 類加載類加載 JDBC Driver DriverManager 類是類是 JDBC 的管理層,作用于用戶和驅(qū)的管理層,作用于用戶和驅(qū)動程序之間動程序之間,它跟蹤可用的驅(qū)動程序,并在數(shù)據(jù)庫和相應(yīng)它跟蹤可用的驅(qū)動程序,并在數(shù)據(jù)庫和相應(yīng)驅(qū)動程序之間建立連接驅(qū)動程序之間建立連接.加載加載 Driver 類的方式類的方式: Class.forName(“com.db.Driver); 所有所有 Driver 類都包含一個靜態(tài)部分,它創(chuàng)建該類的實例,類都包含一個靜態(tài)部分,它創(chuàng)建該類的實例,然后在加載該實例時在然后在加載該實例時在DriverManager類中進行注冊類中進行注冊
25、 DriverManager 類包含一列類包含一列 Driver 類,它們已通過調(diào)用類,它們已通過調(diào)用方法方法DriverManager.registerDriver對自己進行了注冊對自己進行了注冊 TestJDBC1.java Main:try /1Class.forName(com.microsoft.sqlserver.jdbc.SQLServerDriver ); catch (ClassNotFoundException e) e.printStackTrace(); /若驅(qū)動沒找到,則怎么辦若驅(qū)動沒找到,則怎么辦TestJDBC1.java Main:Connection conn
26、 = null;/2String url = jdbc:sqlserver:/:1433;databasename=test;conn = DriverManager.getConnection(url, root, );3)創(chuàng)建創(chuàng)建 Statement對象對象Statement對象用于將對象用于將SQL語句發(fā)送到數(shù)據(jù)庫中。存在三種語句發(fā)送到數(shù)據(jù)庫中。存在三種Statement對象:對象:StatementPreparedStatement(從(從Statement繼承而來)繼承而來)CallableStatement(從(從PreparedStatement繼承而來)繼承而
27、來)Statement對象由對象由Connection的的createStatement()方法創(chuàng)建:方法創(chuàng)建:TestJDBC1.java Main:/ 3Statement st = conn.createStatement();4)執(zhí)行執(zhí)行 SQL語句語句Statement接口的常用方法接口的常用方法:用于產(chǎn)生單個用于產(chǎn)生單個結(jié)果集結(jié)果集的語句,例如的語句,例如SELECT語句。語句。public ResultSet executeQuery(String sql) throws SQLException用于執(zhí)行用于執(zhí)行INSERT,UPDATE或或DELETE語句以及語句以及SQL D
28、DL語句,例如語句,例如CREATE TABLE和和DROP TABLE。該方法返回一個整數(shù),指示受影響的行數(shù)。該方法返回一個整數(shù),指示受影響的行數(shù)。對于對于CREATE TABLE或或DROP TABLE等不操作行的語句,等不操作行的語句,返回值總為零。返回值總為零。public int executeUpdate(String sql) throws SQLException關(guān)閉關(guān)閉Statement對象對象public void close() throws SQLExceptionTestJDBC1.java Main:/ 4String sql = select * from log
29、inuser;ResultSet rs = st.executeQuery(sql);/或者執(zhí)行更新,刪除,插入數(shù)據(jù)或者執(zhí)行更新,刪除,插入數(shù)據(jù)String sql= “insert into emailuser values(aaa,ccc); int row =st.executeUpdate(sql);5)處理返回結(jié)果處理返回結(jié)果(ResultSet)ResultSet包含符合包含符合SQL語句條件的所有行,并且它通語句條件的所有行,并且它通過一套過一套getXxx()方法提供了對這些行中數(shù)據(jù)的訪問。方法提供了對這些行中數(shù)據(jù)的訪問。取得當(dāng)前行中第取得當(dāng)前行中第columnIndex列的整
30、數(shù)的值。列的整數(shù)的值。int getInt(int columnIndex)取得當(dāng)前行中列名為取得當(dāng)前行中列名為columnName的整數(shù)的值。的整數(shù)的值。int getInt(String columnName)取得當(dāng)前行中第取得當(dāng)前行中第columnIndex列的字符串的值。列的字符串的值。String getString(int columnIndex)取得當(dāng)前行中列名為取得當(dāng)前行中列名為columnName的字符串的值。的字符串的值。String getString(String columnName)ResultSet接口其他常用方法接口其他常用方法ResultSet維護指向其當(dāng)前數(shù)
31、據(jù)行的光標,維護指向其當(dāng)前數(shù)據(jù)行的光標,光標向下移光標向下移動一行的方法:動一行的方法:boolean next()關(guān)閉關(guān)閉ResultSet對象對象void close()TestJDBC1.java Main:/ 5while (rs.next() System.out.println(rs.getInt(1) + -+ rs.getString(username) + -+ rs.getString(userpass);6)關(guān)閉連接)關(guān)閉連接按照創(chuàng)建對象相反的順序關(guān)閉連接按照創(chuàng)建對象相反的順序關(guān)閉連接rs.close(); /若是更新就沒有這一步若是更新就沒有這一步st.close();
32、conn.close();使用使用Statement插入數(shù)據(jù)插入數(shù)據(jù) 2-1代碼片斷代碼片斷public static void main(String args) Connection con = null;Statement st= null;try String strSql = insert into emailuser values(軍事軍事,網(wǎng)管網(wǎng)管);try Class.forName(com.microsoft.sqlserver.jdbc.SQLServerDriver ); catch (ClassNotFoundException e) System.out.printl
33、n(無法找到驅(qū)動類無法找到驅(qū)動類);con = DriverManager.getConnection(jdbc:sqlserver:/:1433;database=test,sa,“602);st= con.createStatement();st.executeUpdate(strSql);st.close(); catch (SQLException sqlE) sqlE.printStackTrace(); finally con.close();建立連接建立連接執(zhí)行執(zhí)行sql語句語句數(shù)據(jù)庫連接使用完數(shù)據(jù)庫連接使用完畢,及時釋放畢,及時釋放載入載入JDBC驅(qū)動類驅(qū)動類
34、異常處理異常處理異常處理異常處理綜合案例綜合案例在在servlet中演示中演示第一步:第一步: 注冊頁面(注冊頁面(register.jsp)RegisterServlet 實現(xiàn)插入值的操作實現(xiàn)插入值的操作第二步:第二步: 查看所有用戶信息。查看所有用戶信息。 通過超鏈接通過超鏈接-SearchAllServlet 實現(xiàn)查詢功能實現(xiàn)查詢功能 案例小結(jié)案例小結(jié)發(fā)現(xiàn)一些問題:發(fā)現(xiàn)一些問題: 1: 動態(tài)參數(shù)的處理動態(tài)參數(shù)的處理 statement較麻煩較麻煩 2:連接數(shù)據(jù)庫的代碼類似,重復(fù)了。:連接數(shù)據(jù)庫的代碼類似,重復(fù)了。 3:想把結(jié)果返回到頁面太麻煩。:想把結(jié)果返回到頁面太麻煩。 -不能到指定頁
35、面;不能到指定頁面; -使用使用out.print(),構(gòu)建頁面太復(fù)雜構(gòu)建頁面太復(fù)雜 小結(jié)小結(jié) 2在使用純在使用純Java驅(qū)動方式進行數(shù)據(jù)庫連接時,如果程序在運行時驅(qū)動方式進行數(shù)據(jù)庫連接時,如果程序在運行時拋出異常:拋出異常: java.sql.SQLException: No suitable driver found for jdbc:microsoft:sqlserver:/localhost:1433;DatabaseName=news 那么出錯的原因是什么?如何解決?那么出錯的原因是什么?如何解決?請單獨建立一個類請單獨建立一個類ConnectionManager,專門負責(zé)建立數(shù)據(jù),
36、專門負責(zé)建立數(shù)據(jù)庫連接、以及關(guān)閉連接,并思考這樣做帶來的好處是什么庫連接、以及關(guān)閉連接,并思考這樣做帶來的好處是什么 找不到合適的驅(qū)動類,原因:沒有把數(shù)據(jù)庫驅(qū)動包引入工程找不到合適的驅(qū)動類,原因:沒有把數(shù)據(jù)庫驅(qū)動包引入工程 好處在于:既便于管理、又可以提高代碼的復(fù)用性好處在于:既便于管理、又可以提高代碼的復(fù)用性 完整代碼實現(xiàn)完整代碼實現(xiàn)PreparedStatement PreparedStatement接口接口 (預(yù)編譯的(預(yù)編譯的 SQL 語句)語句) Statement 接口接口 當(dāng)當(dāng) SQL 語句將運行多次時,盡語句將運行多次時,盡量使用量使用PreparedStatement,以,以
37、便提高運行效率便提高運行效率 當(dāng)當(dāng)sql語句中的語句中的某個值不固定某個值不固定時,使用時,使用PreparedStatementPreparedStatement 接口繼承接口繼承 Statement接口接口PreparedStatement比普通的比普通的Statement對象使用起來更加靈活,更對象使用起來更加靈活,更有效率有效率 PreparedStatement pst = conn.preparedStatement(sql);PreparedStatementSql的寫法的寫法-不固定的值用不固定的值用“?”代替代替例如例如 insert into emailuser( name
38、 , pass) values(?,?) select * from emailuser where userid=?為為“?”設(shè)置值設(shè)置值 pst.setInt(序號序號,值值);-序號指的是序號指的是sql中第幾個中第幾個”?”號號 pst.setString(序號,值序號,值); pst.setDate(序號,值序號,值);常用方法常用方法 ResultSet executeQuery( ) int executeUpdate( )使用使用PreparedStatement插入數(shù)據(jù)插入數(shù)據(jù)public class NewsFirstTitleDB2 public static void
39、main(String args) Connection con = null;PreparedStatement pst= null;try con = ConnectionManager.getConnection();String strSql = insert into emailuser values(?,?,?);pst = con.prepareStatement(strSql);pst.setInt(1, 1);pst.setString(2, 軍事軍事);pst.setString(3, 管理員管理員);pStatement.executeUpdate();Pst.close
40、(); catch (SQLException sqlE) sqlE.printStackTrace(); finally Con.close();參數(shù)化的查詢語句參數(shù)化的查詢語句設(shè)置每個設(shè)置每個 ? 參數(shù)的值,參數(shù)的值,列號從列號從1開始開始執(zhí)行執(zhí)行sql語句語句使用使用PreparedStatement刪除數(shù)據(jù)刪除數(shù)據(jù)public class NewsFirstTitleDB3 public static void main(String args) Connection con = null; PreparedStatement pStatement = null; try con =
41、ConnectionManager.getConnection();String strSql = delete from emailuser where username = ?;pStatement = con.prepareStatement(strSql);pStatement.setString(1, 軍事軍事);int row = pStatement.executeUpdate();System.out.println(“成功刪除了成功刪除了+row+行數(shù)據(jù)行數(shù)據(jù)!);Pst.close(); catch (SQLException sqlE) sqlE.printStackTr
42、ace(); finally con.close(); 返回刪除記錄的行數(shù)返回刪除記錄的行數(shù)使用使用PreparedStatement更新數(shù)據(jù)更新數(shù)據(jù)public class NewsFirstTitleDB4 public static void main(String args) Connection con = null;PreparedStatement pStatement = null;try con = ConnectionManager.getConnection();String Sql = update emailuser set username= ? where use
43、rid = ?;pStatement = con.prepareStatement(Sql);pStatement.setString(1, 編輯編輯);pStatement.setInt(2, 1);int row = pStatement.executeUpdate();System.out.println(成功更新了成功更新了+row+行數(shù)據(jù)行數(shù)據(jù)!);Pst.close(); catch (SQLException sqlE) sqlE.printStackTrace(); finally Con.close(); 返回更新記錄的行數(shù)返回更新記錄的行數(shù)小結(jié)小結(jié) 3使用使用PreparedStatement語句執(zhí)行如下操作:語句執(zhí)行如下操作:刪除表刪除表emailuser中所有中所有userid小于小于10的記錄,并在控制臺的記錄,并在控制臺輸出刪除記錄的行數(shù)輸出刪除記錄的行數(shù)完整代碼實現(xiàn)完整代碼實現(xiàn)使用使用PreparedStatement查詢數(shù)據(jù)查詢數(shù)據(jù) 2-1public class NewsFirstTitleDB5 public static void main(String args) int id = 0;Connection con = null;PreparedStatement pstmt = null;ResultSet resSet =
溫馨提示
- 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)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 建筑材料進口物流合同樣本
- 礦產(chǎn)開采用地中介服務(wù)合同
- 二零二五年度包裝機械遠程監(jiān)控與維修服務(wù)合同
- 家禽養(yǎng)殖合同禽類采購合同
- 房屋買賣合同詳情
- 農(nóng)業(yè)工程綜合實施方案
- 軟件技術(shù)服務(wù)合同書
- 國際酒店服務(wù)管理手冊
- 工程監(jiān)理規(guī)范實務(wù)手冊
- 牛羊肉供貨協(xié)議書
- 人教版PEP五年級英語下冊單詞表與單詞字帖 手寫體可打印
- 如果歷史是一群喵
- 抖音房產(chǎn)直播敏感詞匯表
- 2024屆山東省青島市市北區(qū)八年級物理第二學(xué)期期末質(zhì)量檢測試題含解析
- 2022-2023年人教版九年級化學(xué)(上冊)期末試題及答案(完整)
- 中華民族共同體概論課件專家版2第二講 樹立正確的中華民族歷史觀
- 蔚來用戶運營分析報告-數(shù)字化
- 中學(xué)生低碳生活調(diào)查報告
- 游泳池經(jīng)營合作方案
- 擘畫未來技術(shù)藍圖
- 基于情報基本理論的公安情報
評論
0/150
提交評論