java web程序設(shè)計(jì)任務(wù)教程補(bǔ)充案例第9章jdbc_第1頁
java web程序設(shè)計(jì)任務(wù)教程補(bǔ)充案例第9章jdbc_第2頁
java web程序設(shè)計(jì)任務(wù)教程補(bǔ)充案例第9章jdbc_第3頁
java web程序設(shè)計(jì)任務(wù)教程補(bǔ)充案例第9章jdbc_第4頁
java web程序設(shè)計(jì)任務(wù)教程補(bǔ)充案例第9章jdbc_第5頁
已閱讀5頁,還剩4頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、第 9 章 補(bǔ)充案例案例 9-1使用 JDBC 完成數(shù)據(jù)的增刪改查一、案例描述1、 考核知識(shí)點(diǎn)名稱:使用 JDBC 完成數(shù)據(jù)的增刪改查:0280090062、 練習(xí)目標(biāo)掌握 JDBC 常用接口的使用掌握 PreparedSement 對(duì)象的使用掌握 ResultSet 對(duì)象的使用3、 需求分析Sement 對(duì)象每次執(zhí)行SQL 語句時(shí),都會(huì)對(duì)其進(jìn)行編譯。當(dāng)相同的SQL 語句執(zhí)行多次時(shí),Sement對(duì)象就會(huì)使數(shù)據(jù)庫頻繁編譯相同的 SQL 語句,從而降低數(shù)據(jù)庫的效率。為了解決這個(gè)問題,Sement 提供了一個(gè)子類 PreparedSement。PreparedSement 對(duì)象可以對(duì) SQL 語句進(jìn)

2、行預(yù)編譯,預(yù)編譯的信息會(huì)在 PreparedSement 對(duì)象中。當(dāng)相同的 SQL 語句再次執(zhí)行時(shí),程序會(huì)使用PreparedSement 對(duì)象中的數(shù)據(jù),而不需要對(duì) SQL 語句再次編譯去查詢數(shù)據(jù)庫,這樣就大大的提高了數(shù)據(jù)的效率。接下來,本案例將使用 PreparedSement 對(duì)象來完成對(duì)數(shù)據(jù)的增刪改查操作。4、 設(shè)計(jì)思路(實(shí)現(xiàn)原理)1)2)3)4)5)創(chuàng)建一個(gè)用于封裝數(shù)據(jù)的 JavaBean。將加載驅(qū)動(dòng)和獲取數(shù)據(jù)連接等操作封裝在一個(gè)工具類中,以供其他類調(diào)用。創(chuàng)建一個(gè)實(shí)現(xiàn)了對(duì)數(shù)據(jù)庫添刪改查操作的分別創(chuàng)建用于執(zhí)行對(duì)數(shù)據(jù)表添刪改查操作的測(cè)試類。執(zhí)行程序,。二、案例實(shí)現(xiàn)1創(chuàng)建 JavaBean創(chuàng)

3、建一個(gè)用于保存用戶數(shù)據(jù)的 User 類,User 類的具體實(shí)現(xiàn)方式如下所示。import java.util.Date; public claser privateid;private String username; private String password; private String; private Date birthday;/此處省略各屬性的getter/setter 方法2創(chuàng)建工具類由于每次操作數(shù)據(jù)庫時(shí),都需要加載數(shù)據(jù)庫驅(qū)動(dòng)、建立數(shù)據(jù)庫連接以及關(guān)閉數(shù)據(jù)庫連接,為了避免代碼的重復(fù)書寫,下面建立一個(gè)專門用于數(shù)據(jù)庫相關(guān)操作的工具類 JDBCUtils,JDBCUtils 的具體

4、實(shí)現(xiàn)方式如下所示。import java.sql.*; public class JDBCUtils / 加載驅(qū)動(dòng),并建立數(shù)據(jù)庫連接public sic Connection getConnection() throws SQLException, ClaotFoundException Class.forName(com.jdbc.Driver);String url = jdbc:/localhost:3306/jdbc; String username = root;String password = ;Connection conn = DriverManager.getConnect

5、ion(url, username, password); return conn;/ 關(guān)閉數(shù)據(jù)庫連接,資源public sic void release(PreparedSement prestmt, Connection conn, ResultSet rs) if (prestmt != null) try prestmt.close(); catch (SQLException e) e.prStackTrace();prestmt = null;if (conn != null) try conn.close(); catch (SQLException e) e.prStackTr

6、ace();conn = null;if (rs != null) try rs.close(); catch (SQLException e) e.prStackTrace();rs = null;3創(chuàng)建創(chuàng)建一個(gè)名稱為 Users現(xiàn)方式如下所示。的類,該類中封裝了對(duì)表 users 的添加、查詢、刪除和更新等操作,具體實(shí)import java.sql.*;import java.text.SimpleDateFormat; import java.util.ArrayList;public clasers/ 添加用戶的操作publicinsert(User user) Connection c

7、onn = null;PreparedSement prestmt = null; ResultSet rs = null;try / 獲得數(shù)據(jù)的連接conn = JDBCUtils.getConnection();/ 發(fā)送SQL 語句SimpleDateFormat sdf = new SimpleDateFormat(yyyy-MM-dd); String birthday = sdf.format(user.getBirthday();String sql = INSERTO users(id,name,password,birthday) + VALUES( + user.getId(

8、) + , + user.getUsername()+ , + user.getPassword() + , + user.get()+ , + birthday + ); prestmt = conn.prepareSement(sql);num = prestmt.executeUpdate(); if (num 0) return true;return false; catch (Exception e) e.prStackTrace(); finally JDBCUtils.release(prestmt, conn, rs);return false;/ 查詢所有的User 對(duì)象p

9、ublic ArrayList findAll() Connection conn = null;PreparedSement prestmt = null; ResultSet rs = null;ArrayList list = new ArrayList(); try / 獲得數(shù)據(jù)的連接conn = JDBCUtils.getConnection();/ 發(fā)送SQL 語句String sql = SELECT * FROM users;prestmt = conn.prepareSement(sql);rs = prestmt.executeQuery();/ 處理結(jié)果集while (r

10、s.next() User user = new User();user.setId(rs.get(id);user.setUsername(rs.getString(name);user.setPassword(rs.getString(password);user.set(rs.getString();user.setBirthday(rs.getDate(birthday);list.add(user);return list; catch (Exception e) e.prStackTrace(); finally JDBCUtils.release(prestmt, conn, r

11、s);return null;/ 根據(jù)id 查找指定的user public User find(id) Connection conn = null;PreparedSement prestmt = null; ResultSet rs = null;try / 獲得數(shù)據(jù)的連接conn = JDBCUtils.getConnection();/ 發(fā)送SQL 語句String sql = SELECT * FROM users WHEREid= + id;prestmt = conn.prepareSement(sql);rs = prestmt.executeQuery();/ 處理結(jié)果集w

12、hile (rs.next() User user = new User();user.setId(rs.get(id);user.setUsername(rs.getString(name);user.setPassword(rs.getString(password);user.set(rs.getString();user.setBirthday(rs.getDate(birthday);return user;return null; catch (Exception e) e.prStackTrace(); finally JDBCUtils.release(prestmt, con

13、n, rs);return null;/ 刪除用戶publicConnection PreparedSdelete(id) conn = null;ement prestmt = null;ResultSet rs = null; try / 獲得數(shù)據(jù)的連接conn = JDBCUtils.getConnection();/ 發(fā)送SQL 語句String sql = DELETE FROM users WHEREid=+id;prestmtnum if (num=conn.prepareSement(sql);prestmt.executeUpdate();0) return true;ret

14、urn false; catch (Exception e) e.prStackTrace(); finally JDBCUtils.release(prestmt, conn, rs);return false;/ 修改用戶publicConnection PreparedSupdate(User user) conn = null;ement prestmt = null;ResultSet rs = null; try / 獲得數(shù)據(jù)的連接conn = JDBCUtils.getConnection();/ 發(fā)送SQL 語句SimpleDateFormat sdf = new Simple

15、DateFormat(yyyy-MM-dd); String birthday = sdf.format(user.getBirthday();String sql = UPDATE users set name= + user.getUsername()4創(chuàng)建測(cè)試類(1)編寫測(cè)試類 JdbcInsertTest,實(shí)現(xiàn)向 users 表中添加一條數(shù)據(jù),其代碼如下所示。在運(yùn)行程序之前,先來查詢下 users 表中的數(shù)據(jù),如下圖所示。import java.util.Date; public class InsertUserTestpublic sic void main(String args)

16、 / 向users 表一個(gè)用戶信息 Usersud = new Users(); User user=new User();user.setId(5); user.setUsername(hym); user.setPassword(1234); user.set(); user.setBirthday(new Date();b=ud.insert(user); System.out.prln(b);+ ,password= + user.getPassword() + ,=+ user.get() + ,birthday= + birthday+ WHERE id= + user.getId

17、(); prestmt = conn.prepareSement(sql);num = prestmt.executeUpdate(); if (num 0) return true;return false; catch (Exception e) e.prStackTrace(); finally JDBCUtils.release(prestmt, conn, rs);return false;運(yùn)行程序后,如果控制臺(tái)的打印結(jié)果為 true,說明添加用戶信息的操作執(zhí)行成功了。這時(shí),再次查詢users 表,其查詢結(jié)果如下圖所示:圖9-1查詢結(jié)果從上圖的查詢結(jié)果可以看出,users 表中添加了

18、一條 name 為 hym 的數(shù)據(jù)。(2)編寫測(cè)試類 FindAllUsersTest,該類用于實(shí)現(xiàn)users 表中所有的數(shù)據(jù),其代碼如下所示。程序執(zhí)行后,控制臺(tái)會(huì)打印出 users 表中所有的 username 值,結(jié)果如下圖所示。(3)編寫測(cè)試類 FindUserByIdTest,該類實(shí)現(xiàn)了users 表中指定的數(shù)據(jù),其代碼如下所示。程序執(zhí)行后,控制臺(tái)會(huì)將 id 為 5 的User 對(duì)象的 name 值打印出來,結(jié)果如下圖所示。public class FindUserByIdTestpublic sic void main(String args) Usersusers= new Use

19、rs();User user = users.find(5);System.out.prln(id 為 5 的User 對(duì)象的name 值為:+user.getUsername();import java.util.ArrayList; public class FindAllUsersTest public sic void main(String args) / 創(chuàng)建一個(gè)名稱為users的對(duì)象Usersusers= new Users();/ 將Users對(duì)象的findAll()方法執(zhí)行后的結(jié)果放入list 集合ArrayList list = users.findAll();/ 循環(huán)輸出

20、集合中的數(shù)據(jù)for (i = 0; i list.size(); i+) System.out.prln(第 + (i + 1) + 條數(shù)據(jù)的 username 值為:+ list.get(i).getUsername();圖9-2運(yùn)行結(jié)果(4)編寫測(cè)試類 UpdateUserTest,該類實(shí)現(xiàn)了修改 users 表中數(shù)據(jù)的操作,具體代碼如下所示。執(zhí)行上傳程序后,如果控制臺(tái)打印結(jié)果為 true,說明已經(jīng)執(zhí)行了修改用戶信息的操作,這時(shí),再查看users 表,查詢結(jié)果如下圖所示:從上圖的查詢結(jié)果可以看出,id 為 5 的 User 對(duì)象的信息已經(jīng)發(fā)生了變化。(5)編寫測(cè)試類 DeleteUserTest,該類實(shí)現(xiàn)了刪除 users 表中數(shù)據(jù)的操作,其代碼如下所示。public class DeleteUserTestpublic sic void main(String args) / 刪除操作Usersusers= new Users(); b = use

溫馨提示

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

評(píng)論

0/150

提交評(píng)論