版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
1、ACCP V4.0 第十三章第十三章 JDBC 基礎(chǔ)知識 ACCP V4.0 回顧 qJTable的用途 q如何使用JTable qJTree 的用途 q如何使用JTree 2 ACCP V4.0 本章目標(biāo) q了解JDBC的概念及必要性 q了解JDBC驅(qū)動程序類型 q理解JDBC 程序的結(jié)構(gòu) q運用JDBC進行數(shù)據(jù)庫編程 3 ACCP V4.0 數(shù)據(jù)庫訪問技術(shù)簡介 客戶機/服務(wù)器 應(yīng)用程序 數(shù)據(jù)庫編程數(shù)據(jù)庫編程 ODBCJDBC 兩個常用的API 數(shù)據(jù)庫數(shù)據(jù)庫 執(zhí)行 SQL 語句 檢索查詢結(jié)果 4 ACCP V4.0 數(shù)據(jù)庫數(shù)據(jù)庫 ODBC 客戶機/服務(wù)器 GUI應(yīng)用程序 ODBC (開放式數(shù)
2、據(jù)庫連接) (Microsoft 提供) 插 入 刪 除 修 改 應(yīng)用程序編程接口 查詢 5 ACCP V4.0 JDBC JDBC (Java 數(shù)據(jù)庫連接) (sun公司提供) Java 應(yīng)用程序編 程接口 Java應(yīng)用程序 數(shù)據(jù)庫數(shù)據(jù)庫 插 入修 改 刪 除查詢 6 ACCP V4.0 JDBC 驅(qū)動程序的類型 JDBC 驅(qū)動程序 的類型 JDBC-ODBC橋驅(qū)動程序及橋驅(qū)動程序及ODBC驅(qū)動程序驅(qū)動程序 本地本地API部分部分Java驅(qū)動程序驅(qū)動程序 JDBC-Net 純純Java驅(qū)動程序驅(qū)動程序 本地協(xié)議純本地協(xié)議純Java驅(qū)動程序驅(qū)動程序 7 ACCP V4.0 JDBC 體系結(jié)構(gòu)
3、2-1 Java 程序 JDBC 驅(qū)動程序 數(shù)據(jù)庫數(shù)據(jù)庫 SQL 命令 結(jié)果 8 ACCP V4.0 JDBC 體系結(jié)構(gòu) 2-2 應(yīng)用層應(yīng)用層 Driver StatementResultSet Connection 各接口 驅(qū)動層驅(qū)動層 9 ACCP V4.0 java.sql 包 3-1 接口名 說明 Connection此接口表示與數(shù)據(jù)的連接 PreparedStatement此接口用于執(zhí)行預(yù)編譯的 SQL 語句 ResultSet此接口表示了查詢出來的數(shù)據(jù)庫數(shù)據(jù)結(jié)果集 Statement此接口用于執(zhí)行 SQL 語句并將數(shù)據(jù)檢索到 ResultSet 中 10 ACCP V4.0 jav
4、a.sql 包 3-2 類名類名 說明說明 DriverManager此類用于加載和卸載各種驅(qū)動程序并建立與數(shù)據(jù)庫的連接 Date此類包含將 SQL 日期格式轉(zhuǎn)換成 Java 日期格式的各種方法 Time此類用于表示時間 TimeStamp此類通過添加納秒字段為時間提供更高的精確度 11 ACCP V4.0 java.sql 包 3-3 qSQLException /* * fooBar */ public void foobar() throws SQLException throw new SQLException(“剛引發(fā)了一個 SQLException ”); try fooBar()
5、; catch(SQLException ex) System.out.println(“已捕獲一個 SQLException 異常!”); System.out.println(“消息: “ + ex.getMessage(); System.out.println(“錯誤代碼: “ + ex.getErrorCode(); 調(diào)用 fooBar 12 ACCP V4.0 JDBC 程序訪問數(shù)據(jù)庫的步驟 2-1 開 始 導(dǎo)入 java.sql包 加載并注冊驅(qū)動程序 創(chuàng)建一個 Connection 對象創(chuàng)建一個 Statement 對象執(zhí)行語句 關(guān)閉ResultSet 對象關(guān)閉Statement
6、對象關(guān)閉連接 結(jié) 束 使用ResultSet對象 13 ACCP V4.0 Friends 表的結(jié)構(gòu)表的結(jié)構(gòu) JDBC 程序訪問數(shù)據(jù)庫的步驟 2-2 q 它演示訪問數(shù)據(jù)庫的各個步驟 q 在執(zhí)行示例 1 中的程序之前,SQL Server 中應(yīng)該存在一個 名為 friends 的表 演示:示例 1 列名稱列名稱數(shù)據(jù)類型數(shù)據(jù)類型 名稱 Varchar(50) 地址Varchar(50) 電話Numeric 入職日期Datetime 工資Numeric /* 2005 Aptech Limited * 版權(quán)所有 */ import java.sql.SQLException; import java
7、.sql.Connection; import java.sql.DriverManager; import java.sql.Statement; import java.sql.ResultSet; /* 這個類演示訪問數(shù)據(jù)庫需遵循的各個步驟. * version 1.0, 2005 年 8 月 26 日 * author Ben */ class Jdbctest /* 構(gòu)造方法 */ protected Jdbctest() /*這是 main 方法. */ public static void main(String args) try Class.forName(sun.jdbc.
8、odbc.JdbcOdbcDriver); catch (ClassNotFoundException ce) System.out.println(ce); try String url = jdbc:odbc:test; Connection con = DriverManager.getConnection(url); Statement s = con.createStatement(); ResultSet rs = s.executeQuery(select * from friends); while (rs.next() System.out.print(rs.getStrin
9、g(1) + t); System.out.print(rs.getString(2) + t); System.out.print(rs.getInt(3) + t); System.out.print(rs.getDate(4) + t); System.out.println( ); rs.close(); s.close(); con.close(); catch (SQLException ce) System.out.println(ce); 14 ACCP V4.0 JDBC 查詢2-1 SQL 查詢字符串 executeQuery() 方法 作為參數(shù)傳遞 ResultSet 返
10、回查詢數(shù)據(jù) SELECT name, email, phone FROM colleagues; 使用 SQL 語句,查詢可編寫為: String str = SELECT emp_id, lname, fname FROM colleagues; Statement stmt = con.createStatement(); ResultSet rset = stmt.executeQuery(str); 使用 JDBC 編寫此查詢,則代碼為: Statement接口接口 15 ACCP V4.0 JDBC 查詢2-2 q 它演示 SQL 中 sum( ) 方法的用法 演示:示例 2 /*
11、* Jdbctest2 */ import java.sql.SQLException; import java.sql.Connection; import java.sql.DriverManager; import java.sql.Statement; import java.sql.ResultSet; /* 這個類演示 SQL 中 sum() 方法的用法 * version 1.0, 2005 年 8 月 26 日 * author Ben */ class Jdbctest2 /* 構(gòu)造方法*/ protected Jdbctest2() /* 這是 main 方法*/ publ
12、ic static void main(String args) try Class.forName(sun.jdbc.odbc.JdbcOdbcDriver); catch (ClassNotFoundException ce) System.out.println(ce); try String url = jdbc:odbc:test; Connection con = DriverManager.getConnection(url); Statement s = con.createStatement(); ResultSet rs = s.executeQuery( select h
13、iredate, sum(salary) from friends group by hiredate); while (rs.next() System.out.print(rs.getDate(1) + t); System.out.print(rs.getInt(2) + t); System.out.println( ); rs.close; s.close(); con.close(); catch (SQLException ce) System.out.println(ce); 16 ACCP V4.0 演示:示例 3 q 它演示 SQL 中 INSERT 語句的用法 /* *
14、Jdbctest3 */ import java.sql.SQLException; import java.sql.Connection; import java.sql.DriverManager; import java.sql.Statement; import java.sql.ResultSet; /* 這個類演示 INSERT 語句的用法. * version 1.0, 2005 年 8 月 26 日 * author Ben */ class Jdbctest3 /* 構(gòu)造方法 */ protected Jdbctest3() JDBC 插入數(shù)據(jù)實現(xiàn) /* 這是 main 方法
15、*/ public static void main(String args) try Class.forName(sun.jdbc.odbc.JdbcOdbcDriver); catch (ClassNotFoundException ce) System.out.println(ce); try String url = jdbc:odbc:test; String str = INSERT INTO “ + friends(name,address,salary)“ + VALUES(朱八,深圳 ,25690); Connection con = DriverManager.getCon
16、nection(url); Statement s = con.createStatement(); int rowcount = s.executeUpdate(str); String str1 = select name, sum(salary) “ +from friends + group by name; ResultSet rs = s.executeQuery(str1); while (rs.next() System.out.print(rs.getString(1) + t); System.out.print(rs.getInt(2) + t); System.out.
17、println( ); rs.close(); s.close(); con.close(); catch (SQLException ce) System.out.println(ce); 17 ACCP V4.0 JDBC 刪除和修改實現(xiàn) q 它演示 SQL 中各種命令的用法 演示:示例 4 /* * Jdbc2 */ import java.sql.SQLException; import java.sql.Connection; import java.sql.DriverManager; import java.sql.Statement; /* 這這個類演示 SQL 中命令的用法.
18、 * version 1.0, 2005 年 8 月 26 日 * author Ben */ class Jdbc2 /* 構(gòu)造方法.*/ protected Jdbc2() public static void main(String args) Connection con; Statement stmt; String url; String sql; try Class.forName(sun.jdbc.odbc.JdbcOdbcDriver); catch (ClassNotFoundException ce) System.out.println(ce); try url = j
19、dbc:odbc:test; con = DriverManager.getConnection(url); sql = Delete from friends where rtrim(name)like張三 ; System.out.println( ); stmt = con.createStatement(); stmt.executeUpdate(sql); System.out.println(張三 的記錄已刪除“); stmt.close(); con.close(); con = DriverManager.getConnection(url); sql = Update fri
20、ends set address=青島 where “ + rtrim(name) like 李四; ; System.out.println( ); stmt = con.createStatement(); stmt.executeUpdate(sql); stmt.close(); con.close(); System.out.println(李四的記錄已更新); catch (SQLException ce) System.out.println(ce); 18 ACCP V4.0 PreparedStatement接口 3-1 PreparedStatement接口 (預(yù)編譯的 S
21、QL 語句) PreparedStatement 用于提高運行時效率 執(zhí)行 PreparedStatement 對象比執(zhí)行 Statement 對象快 Statement 接口接口 19 ACCP V4.0 PreparedStatement接口 3-2 q 它演示了PreparedStatement 的用法 演示:示例 5 /* * CourseAppl */ import java.sql.SQLException; import java.sql.Connection; import java.sql.DriverManager; import java.sql.Statement; i
22、mport java.sql.ResultSet; import java.sql.PreparedStatement; /* 這個類演示 SQL 中 PreparedStatement 的用法*/ class CourseAppl private Connection con; private String url; private String serverName; private String portNumber; private String databaseName; private String userName; private String password; privat
23、e String sql; CourseAppl() url = jdbc:microsoft:sqlserver:/; serverName = “l(fā)ocalhost; portNumber = 1433; databaseName = “test; userName = “sa; password = “sa; private String getConnectionUrl() return url + serverName + : + portNumber + ;databaseName = + databaseName + ; private java.sql.Connection g
24、etConnection() try Class.forName(com.microsoft.jdbc.sqlserver.SQLServerDriver); con = DriverManager.getConnection( getConnectionUrl(), userName, password); if (con != null) System.out.println(連接成功!); catch (Exception e) e.printStackTrace(); System.out.println(getConnection() 內(nèi)的錯誤跟蹤: + e.getMessage()
25、; return con; public void display() try con = getConnection(); PreparedStatement pstmt = con.prepareStatement( UPDATE friends SET salary = ? WHERE name like ?); pstmt.setInt(1, 10000 ); pstmt.setString(2, 李四 ); pstmt.executeUpdate(); System.out.println(“記錄已更新!); Statement s = con.createStatement();
26、String sql = SELECT * FROM friends ; ResultSet rs = s.executeQuery(sql); while (rs.next() System.out.println( ); System.out.print(rs.getInt(1) + ); System.out.println(rs.getInt(5); catch (SQLException ce) System.out.println(ce); public static void main(String args) CourseAppl retObj = new CourseAppl
27、(); retObj.display(); 20 ACCP V4.0 PreparedStatement 接口 3-3 q 它演示在基于條件的 SQL 查詢中如何使用 PreparedStatement,其中條件在 IN 參數(shù)中給出 演示:示例 6 import java.sql.SQLException; import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.PreparedStatement; /* 這個類演示在基于條件的 SQL 查詢中使用
28、 PreparedStatement*/ class RetrieveRecords private Connection con; private String url; private String serverName, portNumber, databaseName, userName; private String sql; RetrieveRecords() url = jdbc:microsoft:sqlserver:/; serverName = “l(fā)ocalhost; portNumber = 1433; databaseName = “test; userName = “
29、sa; password = “sa; private String getConnectionUrl() return url + serverName + : + portNumber + ;databaseName = + databaseName + ; private java.sql.Connection getConnection() try Class.forName(com.microsoft.jdbc.sqlserver.SQLServerDriver); con = DriverManager.getConnection( getConnectionUrl(), user
30、Name, password); if (con != null) System.out.println(連接成功!); catch (Exception e) e.printStackTrace(); System.out.println(“getConnection() 內(nèi)的錯誤跟蹤: + e.getMessage(); return con; public void display() try con = getConnection(); sql = select * from Friends where Salary ?; PreparedStatement pstmt = con.p
31、repareStatement( sql, ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_UPDATABLE); pstmt.setInt(1, 5000); ResultSet rs = pstmt.executeQuery(); while (rs.next() System.out.print(rs.getString(1) + t); System.out.print(rs.getString(2) + t); System.out.print(rs.getInt(3) + t); System.out.print(rs.getDa
32、te(4) + t); System.out.print(rs.getInt(5) + t); System.out.println( ); rs.close(); pstmt.close(); con.close(); catch (SQLException ce) System.out.println(ce); /* 這是 main 方法*/ public static void main(String args) RetrieveRecords retRec = new RetrieveRecords(); retRec.display(); 21 ACCP V4.0 使用結(jié)果集 3-1 q ResultSet 對象完全依賴于 Statement 對象和 Connection 對象 q 每次執(zhí)行 SQL 語句時,都會用新的結(jié)果重寫結(jié)果集 q 當(dāng)相關(guān)的 Statement 關(guān)閉時,ResultSet 對象會自動關(guān)閉 Next( )get() 此方法將光標(biāo)從 當(dāng)前位置下移一行 從 ResultSet 對象返回數(shù)據(jù) 22 ACCP V4.0 使用結(jié)果集 3-2 q 它演示對當(dāng)前行的處理 q 使用 next() 方法時,記錄是按順序處理的 q 必須
溫馨提示
- 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)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五版家居行業(yè)導(dǎo)購員招聘與服務(wù)合同2篇
- 跨學(xué)科實踐活動6調(diào)查家用燃料的變遷與合理使用說課稿-2024-2025學(xué)年九年級化學(xué)人教版(2024)上冊
- 專利實施權(quán)讓渡合同范本版B版
- 2025年版旅游行業(yè)人才培養(yǎng)與職業(yè)發(fā)展合作協(xié)議4篇
- 二零二五年度給水工程進度監(jiān)理合同3篇
- 2025年度柴油銷售團隊建設(shè)與培訓(xùn)合同4篇
- 二零二五年度建筑材料運輸與裝卸環(huán)保評估合同3篇
- 二零二五版貨車運輸行業(yè)司機雇傭協(xié)議樣本3篇
- 2025版鋁扣板國際貿(mào)易與進出口合同范本4篇
- 三年級數(shù)學(xué)(上)計算題專項練習(xí)附答案
- GB/T 8005.2-2011鋁及鋁合金術(shù)語第2部分:化學(xué)分析
- GB/T 37234-2018文件鑒定通用規(guī)范
- GB/T 31888-2015中小學(xué)生校服
- 質(zhì)量檢查考核辦法
- 不動產(chǎn)登記實務(wù)培訓(xùn)教程課件
- 云南省普通初中學(xué)生成長記錄-基本素質(zhì)發(fā)展初一-初三
- 2023年系統(tǒng)性硬化病診斷及診療指南
- 外科醫(yī)師手術(shù)技能評分標(biāo)準(zhǔn)
- 《英語教師職業(yè)技能訓(xùn)練簡明教程》全冊配套優(yōu)質(zhì)教學(xué)課件
- 采購控制程序
- 六年級上冊數(shù)學(xué)簡便計算題200題專項練習(xí)
評論
0/150
提交評論