《Java數(shù)據(jù)庫連接》PPT課件
《《Java數(shù)據(jù)庫連接》PPT課件》由會員分享,可在線閱讀,更多相關《《Java數(shù)據(jù)庫連接》PPT課件(36頁珍藏版)》請在裝配圖網(wǎng)上搜索。
1、唐好選Email: 主 要 內 容ODBC介 紹JDBC介 紹JDBC例 程JDBC結 構 (包 括 JDBC API和 JDBC驅 動 )Java JDBC應 用 框 架Java JDBC基 本 類 介 紹Java JDBC異 常事 務 處 理 ODBC介 紹ODBC (Open DataBase Connectivity)ODBC是 用 C語 言 實 現(xiàn) 的 一 種 標 準 應 用 程 序 數(shù) 據(jù) 庫接 口 , 包 括 以 下 幾 個 方 面 的 內 容應 用 程 序 接 口 :統(tǒng) 一 的 SQL編 程 接 口驅 動 器 管 理 器 :為 應 用 程 序 裝 載 數(shù) 據(jù) 庫 驅 動 器數(shù)
2、據(jù) 庫 驅 動 器 :實 現(xiàn) ODBC的 函 數(shù) 調 用 ,提 供 對 特 定 數(shù) 據(jù) 源的 SQL請 求數(shù) 據(jù) 源 :由 DBMS、 操 作 系 統(tǒng) 和 相 關 的 網(wǎng) 絡 平 臺 組 成 JDBC介 紹JDBC(Java DataBase Connectivity)JDBC 是 一 種 用 于 執(zhí) 行 SQL語 句 的 Java API , 可以 按 統(tǒng) 一 的 方 式 訪 問 數(shù) 據(jù) 庫JDBC程 序 包 : java.sqlJDBC提 供 實 現(xiàn) :訪 問 數(shù) 據(jù) 庫 與 平 臺 無 關 對 數(shù) 據(jù) 庫 使 用 者 而 言 是 透 明 的對 數(shù) 據(jù) 庫 本 身 而 言 也 是 透 明
3、的幾 乎 每 個 數(shù) 據(jù) 庫 供 應 商 都 具 有 JDBC驅 動 JDBC介紹JDBC可 以 使 java應 用 (APP和 Applet)同 大 量 關 系數(shù) 據(jù) 庫 系 統(tǒng) 之 間 建 立 起 獨 立 于 數(shù) 據(jù) 庫 的 連 接 ( 例如 Oracle/Sybase/SQL Server等 )JDBC主 要 實 現(xiàn) 以 下 功 能連 接 到 數(shù) 據(jù) 庫向 數(shù) 據(jù) 庫 發(fā) 送 SQL語 句處 理 數(shù) 據(jù) 庫 返 回 的 結 果執(zhí) 行 更 新 /插 入 和 刪 除 操 作執(zhí) 行 存 儲 過 程 import java.sql.* try Class.forName(“sun.jdbc.od
4、bc.JdbcOdbcDriver”); Connection connection = DriverManager.getConnection(“jdbc:odbc:Demo”,”a”,”a”);Step1:連 接 到 數(shù) 據(jù) 庫 Statement statement = connection.createStatement(); String sql = “SELECT * FROM student”; ResultSet resultSet = statement.executeQuery(sql);Step2:執(zhí) 行 SQL語 句 , 查 詢 數(shù) 據(jù) 庫JDBC例 程 while(
5、resultSet.next() ) name = resultSet.getString(1); phone = resultSet.getString(2); System.out.println( name + “,” + phone ); Step3:產 生 查 詢 結 果 resultSet.close(); statement.close(); connection.close(); catch(Exception e) Step4:關 閉 連 接JDBC例 程 步 驟 1: 得 到 正 確 的 driver 并 創(chuàng) 建 一 個 連 接Driver 是 動 態(tài) 裝 入 的The C
6、onnection URL 是 與 數(shù) 據(jù) 庫 有 關 的 , 并 指 向服 務 器Class.forName(“sun.jdbc.odbc.JdbcOdbcDriver”);Connection connection = DriverManager.getConnection(“jdbc:odbc:Demo”,”a”,”a”);JDBC例 程 步 驟 2 : 建 立 一 個 statement; 向 字 符 串 中 寫 入 SQL 命令 , 執(zhí) 行 它SQL 命 令 會 傳 送 到 數(shù) 據(jù) 庫會 返 回 一 個 結 果 集 對 象 (ResultSetObject),該 對 象包 含 查 詢
7、 后 的 結 果Statement statement = connection.createStatement();String sql = “SELECT * FROM student”;ResultSet resultSet = statement.executeQuery(sql);JDBC例程 步 驟 3 : 分 析 結 果get()方 法 得 到 每 種 數(shù) 據(jù) 類 型 的 數(shù) 據(jù) (getString(col), getDate(col), )更 改 數(shù) 據(jù) 的 方 法 (updateString(col, val), )scrollable 結 果 集 可 以 定 位 具 體
8、行 (first(), last(), previous(), next(), absolute(int), )while( resultSet.next() ) name = resultSet.getString(1); phone = resultSet.getString(2); System.out.println( name + “,” + phone );JDBC例 程 步 驟 4 : 操 作 完 成 后 要 關 閉關 閉 順 序 很 重 要 :1. ResultSet2. Statement3. Connection resultSet.close(); statement.c
9、lose(); connection.close();JDBC例程 JDBC結構JDBC結 構 由 兩 個 層 次 組 成JDBC API支 持 Java應 用 到 JDBC驅 動 管 理器 的 通 信JDBC驅 動 API支 持 JDBC驅 動 管 理 器 到ODBC驅 動 的 通 信JDBC API同 時 支 持 數(shù) 據(jù) 庫 訪 問 的 兩 層 和 三 層模 型 JDBC結構 在 兩 層 數(shù) 據(jù) 庫 訪 問 模 型 中 ,應 用 程 序 直 接 同 數(shù) 據(jù) 庫 進 行通 信 ,兩 層 模 型 需 要 JDBC的 驅 動 ,由 JDBC驅 動 把 SQL語句 直 接 傳 遞 給 數(shù) 據(jù) 庫
10、,并 將 結 果 發(fā) 送 回 應 用 程 序 JDBC結構 在 三 層 的 數(shù) 據(jù) 庫 訪 問 模 型 中 ,JDBC驅 動 把 用 戶 命 令 發(fā) 送給 一 個 中 間 層 應 用 服 務 ,然 后 由 它 把 命 令 發(fā) 送 給 數(shù) 據(jù) 庫 ,數(shù) 據(jù) 庫 處 理 這 些 命 令 ,把 結 果 發(fā) 送 回 中 間 層 ,由 中 間 層 把結 果 發(fā) 送 回 應 用 程 序 JDBC結構對 于 應 用 程 序 開 發(fā) 人 員 , JDBC API允 許 如 下 操 作連 接 到 數(shù) 據(jù) 源發(fā) 送 SQL語 句通 過 瀏 覽 /檢 查 和 編 輯 數(shù) 據(jù) 的 方 法 來 處 理 結 果訪 問 數(shù)
11、 據(jù) 庫 的 元 數(shù) 據(jù) 和 查 詢 結 果 JDBC驅動所 有 的 Java程 序 與 數(shù) 據(jù) 庫 創(chuàng) 建 連 接 過 程 的 第 一 步 是在 JVM中 注 冊 JDBC驅 動靜 態(tài) 注 冊DriverManager.registerDriver(new sun.jdbc.odbc.JdbcOdbcDriver();動 態(tài) 注 冊Class.forName(“sun.jdbc.odbc.JdbcOdbcDriver”);一 旦 JDBC驅 動 程 序 用 DriverManager注 冊 了 , 就 可 用 于 建立 到 數(shù) 據(jù) 庫 的 連 接 JDBC驅動JDBC數(shù) 據(jù) 庫 驅 動 具
12、有 四 種 類 型JDBC-ODBC橋 :JDBC先 連 接 到 ODBC,ODBC再 連接 到 數(shù) 據(jù) 庫 ,把 JDBC的 方 法 轉 換 為 ODBC的 功 能部 分 java驅 動 :直 接 連 接 到 供 應 商 客 戶 庫 中 中 間 件 驅 動 :由 JDBC連 接 到 中 間 件 ,中 間 件 再 連 接到 數(shù) 據(jù) 庫 上純 java驅 動 :直 接 把 JDBC的 驅 動 轉 化 為 DBMS使 用的 網(wǎng) 絡 協(xié) 議 ,允 許 從 客 戶 機 上 直 接 調 用 DBMS服 務器 ,是 一 種 “ 瘦 ” 驅 動類 型 3和 類 型 4都 可 以 用 在 有 關 因 特 網(wǎng)
13、的 應 用 程 序 中 ClientJDBC-ODBC BridgeJDBC APIJava AppODBC DriverODBC-supportedNative DriverNative program (must be installed)Java program (could be downloaded) ServerRDBMS運 行 在 Windows上需 要 在 客 戶 端 安 裝 ODBC driver 類型 1:JDBC-ODBC驅動import java.sql.* try Class.forName(“sun.jdbc.odbc.JdbcOdbcDriver”); Conne
14、ction connection = DriverManager.getConnection(“jdbc:odbc:Demo”,”a”,”a”); ClientJDBC-Native BridgeJDBC APIJava AppNative DriverNative program (must be installed)Java program (could be downloaded) ServerRDBMS類 型 2:部 分 java驅 動 ( 本 地 API驅 動 ) 客 戶 端 安 裝 driver driver將 JDBC請 求 轉 成 數(shù) 據(jù) 庫 本 地 API請 求 每 臺 客
15、戶 機 上 加 載 數(shù) 據(jù) 庫 庫 文 件 不 能 用 在 因 特 網(wǎng) 上 import java.sql.* try Class.forName(“com.ibm.db2.jdbc.app.DB2Driver”); Connection connection = DriverManager.getConnection(“jdbc:db2:Demo”,”a”,”a”);類 型 2:部 分 java驅 動 ( 本 地 API驅 動 ) 類型 3 :中間件驅動(網(wǎng)絡協(xié)議驅動)Client bJDBC-Net BridgeJDBC APIJava AppClient aClient c Networ
16、kServer RDBMSc Native program (must be installed)Java program (could be downloaded)Network Protocol RDBMSbRDBMSaDatabase ProtocolaDatabase ProtocolbDatabase Protocolc 網(wǎng) 絡 服 務 器 作 用負 責 管 理 職 責緩 沖 caching池 pooling Client ServerConnection in use Free ConnectiongetConnection() Connection Pool RDBMS 類型 3
17、 :中間件驅動(網(wǎng)絡協(xié)議驅動) 類型 4 :純java驅動(本地協(xié)議驅動)其 實 現(xiàn) 不 需 要 客 戶 端 的 任 何 配 置 !Client JDBC DriverJDBC APIJava App Native program (must be installed)Java program (could be downloaded) ServerRDBMS import java.sql.* try Class.forName(com.microsoft.jdbc.sqlserver.SQLServerDriver);conn = DriverManager.getConnection(j
18、dbc:microsoft:sqlserver:/TANGHX:1433;DatabaseName=teach,sa,);類型 4 :純java驅動(本地協(xié)議驅動) MySQLClass.forName(“org.gjt.mm.mysql.Driver”)DriverManage.getConnection(“jdbc.mysql:/Hostname:3306/DatabaseName”,sUsr,spwd)OracleClass.forName(“oracle.jdbc.driver.OracleDriver”);DriverManager.getConnection(“jdbc:oracl
19、e:thin:1521:DatabaseName”,sUsr,sPwd) SybaseClass.forName(“com.sybase.jdbc2.jdbc.SybDriver”)DriverManage.getConnection(“jdbc.sybase:Tds:HostName:2638”,sUsr,spwd)SqlServerClass.forName(“com.microsoft.jdbc.sqlserver.SQLServerDriver”);DriverManager.getConnection(“jdbc:microsoft:sqlserver:/HostName:1433;
20、DatabaseName=demo”,sUsr,sPwd)DB2Class.forName(“.DB2Driver”);DriverManager.getConnection(“jdbc:db2:/HostName/DatabaseName”,sUsr,sPwd)JDBC URL DriverManage類 可 維 護 驅 動 實 現(xiàn) 的 列 表 ,最 終 向 應用 程 序 提 供 一 個 匹 配 了 JDBC URL的 驅 動 實 現(xiàn)Driver類 是 JDBC驅 動 的 接 口 ,任 何 特 定 的 數(shù) 據(jù) 庫 驅動 都 必 須 實 現(xiàn) 該 接 口Connection接 口 用 來 把 一
21、 系 列 SQL語 句 發(fā) 送 給 數(shù) 據(jù)庫 ,并 管 理 其 提 交 或 中 斷 , 具 體 包 含 如 下 步 驟加 載 數(shù) 據(jù) 庫 驅 動定 義 URL建 立 連 接Java.sql核心類介紹 JDBC支 持 三 種 類 型 的 語 句Statement:用 來 立 即 執(zhí) 行 SQL語 句PreparedStatement:用 來 執(zhí) 行 編 譯 后 的 SQL語 句CollableStatement:用 來 執(zhí) 行 存 儲 過 程Statement用 來 執(zhí) 行 靜 態(tài) SQL語 句 ,并 獲 得 處 理 結 果可 使 用 Connection對 象 中 的 createStatem
22、ent()方 法 創(chuàng)建 Statement對 象對 于 SELECT語 句 ,使 用 的 方 法 是 executeQuery()對 于 諸 如 UPDATE/DELETE/DDL等 語 句 ,使 用 的 方 法 是executeUpdate()Java.sql核心類介紹 PreparedStatement:用 來 執(zhí) 行 編 譯 后 的 SQL語 句Java.sql核心類介紹PreparedStatement pstmt = con.prepareStatement(UPDATE EMPLOYEES SET SALARY = ? WHERE ID = ?); pstmt.setBigDeci
23、mal(1, 153833.00);pstmt.setInt(2, 110592);pstmt.executeUpdate();CallableStatement:用 來 執(zhí) 行 存 儲 過 程Connection.prepareCall(call proc_test(?,?); ResultSet接 口 封 裝 了 代 表 數(shù) 據(jù) 庫 查 詢 返 回 數(shù) 據(jù) 的 對象Statement接 口 的 executeQuery()方 法 返 回 了 ResultSet對 象獲 得 ResultSet對 象 的 句 柄 之 后 ,指 針 最 初 定 位 在 第 1行 之 前 ,使 用 ResultS
24、et對 象 的 next()方 法 可 以 循 環(huán) 遍 歷數(shù) 據(jù) 庫 返 回 全 部 數(shù) 據(jù) 行Java.sql核心類介紹 DatabaseMetaData接 口 提 供 了 描 述 數(shù) 據(jù) 庫 全 局 信息 的 所 有 變 量 和 方 法Java.sql核心類介紹DatabaseMetaData dm = conn.getMetaData();System.out.println(dm.getDatabaseProductName();System.out.println(dm.getDatabaseProductVersion();System.out.println(dm.getDriv
25、erName();System.out.println(dm.getDriverVersion();System.out.println(dm.getMaxRowSize();System.out.println(dm.getURL();System.out.println(dm.getUserName(); JDBC異常類型JDBC提 供 的 異 常 類 型 包 括 :SQLException/SQLWarning/DataTruncationJava.sql程 序 包 中 大 多 數(shù) 方 法 都 用 SQLException指 示 異常 ,要 求 用 try/catch程 序 塊 處 理
26、異 常 try catch(SQLException sqle) while(sqle!=null) System.err.print(“SQLException: “); System.println(sqle.toString(); sqle=sqle.getNextException(); 事務處理 不 進 行 事 務 處 理 例 :1. Client A reads the record(a, b)2. Client B reads the record(a, b)3. Client A changes a for x and writes(x, b)4. Client B chang
27、es b for z and writes(a, z)客 戶 B覆 蓋 了 A的 變 化 進行事務處理, 記錄可得到保護:1. Transaction 1 begins; Client A reads the record(a, b)2. Transaction 2 begins; Client B reads the record(a, b)3. Client A changes a for x and writes(x, b); Transaction 1 ends4. Client B changes b for z and writes(a, z); 由 于 記 錄 已 被 更 新 ,
28、事 務 2更 新 失 敗 JDBC事務支持Connection對 象 省 設 置 為 自 動 提 交 方 式 ,意 味 著 每 次 執(zhí)行 一 條 語 句 ,都 會 向 數(shù) 據(jù) 庫 提 交Connection對 象 可 直 接 控 制 事 務 并 進 行 提 交 或 回 滾 ,通常 由 以 下 幾 個 方 法 完 成Void setAutoCommit(boolean autoCommit)Void commit()Void rollback()在 事 務 的 開 始 位 置 ,通 常 調 用 con.setAutoCommit(false)方 法 ,如 果 成 組 的 更 新 操 作 都 成 功 執(zhí) 行 ,便 調 用mit()方 法 ,如 果 發(fā) 生 了 異 常 ,則 調 用 con.rollback()方 法 撤 消 全 部 修 改 我 們 的 例 子數(shù) 據(jù) 的 導 入 需 要 將 數(shù) 據(jù) 寫 入 數(shù) 據(jù) 庫執(zhí) 行 Insert數(shù) 據(jù) 導 出 需 要 從 數(shù) 據(jù) 庫 讀 取 數(shù) 據(jù)執(zhí) 行 查 詢數(shù) 據(jù) 的 添 加 和 修 改 需 要 寫 入 數(shù) 據(jù) 庫執(zhí) 行 insert 或 update數(shù) 據(jù) 的 刪 除 需 要 刪 除 數(shù) 據(jù) 庫 記 錄執(zhí) 行 Delete
- 溫馨提示:
1: 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
2: 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
3.本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
5. 裝配圖網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年防凍教育安全教育班會全文PPT
- 2025年寒假安全教育班會全文PPT
- 初中2025年冬季防溺水安全教育全文PPT
- 初中臘八節(jié)2024年專題PPT
- 主播直播培訓提升人氣的方法正確的直播方式如何留住游客
- XX地區(qū)機關工委2024年度年終黨建工作總結述職匯報
- 心肺復蘇培訓(心臟驟停的臨床表現(xiàn)與診斷)
- 我的大學生活介紹
- XX單位2024年終專題組織生活會理論學習理論學習強黨性凝心聚力建新功
- 2024年XX單位個人述職述廉報告
- 一文解讀2025中央經(jīng)濟工作會議精神(使社會信心有效提振經(jīng)濟明顯回升)
- 2025職業(yè)生涯規(guī)劃報告自我評估職業(yè)探索目標設定發(fā)展策略
- 2024年度XX縣縣委書記個人述職報告及2025年工作計劃
- 寒假計劃中學生寒假計劃安排表(規(guī)劃好寒假的每個階段)
- 中央經(jīng)濟工作會議九大看點學思想強黨性重實踐建新功