亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

Java,Beans 和 關系數據庫 的 鏡像

2019-11-18 12:11:16
字體:
來源:轉載
供稿:網友

  摘 要
   JDK1.1 包 括 了 新 的 數 據 庫 存 取(JDBC) 及 組 件(javaBeans) 的 應 用 程 序 接 口(APIs)。 這 兩 個API 結 合 在 一 起, 可 用 來 開 發 通 用 數 據 庫 代 碼。 通 過 用 唯 一 的 一 個 類 去 存 取 任 何 一 種JDBC 數 據 庫( 封 裝 于 不 同 組 件 中 的 各 個 應 用 程 序 有 著 其 具 體 的 編 碼), 用 戶 就 不 必 因 為 數 據 庫 結 構 一 點 點 的 細 小 變 化 去 修 改 數 據 庫 編 碼。
  
   一 個 關 系 數 據 庫 基 本 上 包 括 一 系 列 相 互 關 連 的 表, 在 每 一 個 表 中 存 有 一 類 與 應 用 系 統 相 關 的 數 據。 例 如 一 個 地 址 簿 數 據 庫 中, 可 能 有 關 于 人 員、 住 址、 電 話 號 碼 等 方 面 的 表。 在 數 據 庫 中, 每 一 個 這 樣 的 實 體 將 被 作 為 一 系 列 的 字 符 串, 整 數 及 其 它 原 始 數 據 類 型 存 貯 起 來。 數 據 庫 中, 表 的 定 義 將 描 述 每 一 種 與 實 體 相 關 的 信 息 如 何 在 一 個 表 的 字 段 中 存 儲。 例 如, 你 可 以 在 一 個 名 為“ 人” 的 表 中, 有 兩 個 字 段 別 表 示 所 存 字 符 串 為“ 姓” 和“ 名”。 每 一 張 表 應 當 有 一 個 或 幾 個 字 段 值 作 為 標 識, 確 保 每 條 記 錄 的 唯 一 性。 這 些 標 識 或“ 鍵” 可 以 用 來 連 接 存 在 于 不 同 表 中 的 信 息。 例 如 你 可 以 在“ 人 員” 表 中, 為 每 個 人 指 定 唯 一 的“ 人 員 號 碼” 的 鍵 值, 并 在“ 地 址” 表 中 的 相 應 字 段 中 使 用 同 一 個 鍵 值。 這 樣, 你 可 以 通 過 對 兩 個 表 中 的“ 人 員 號 碼” 字 段 值 的 匹 配, 使 每 一 個 人 和 他 的 地 址 關 聯 起 來。
  
     關 系 數 據 庫 系 統 出 現 于 七 十 年 代, 時 至 今 日, 它 仍 然 是 存 儲 巨 量 數 據 的 主 要 方 式。 因 而,Java 軟 件 工 具 有 必 要 具 備 處 理 關 系 數 據 庫 的 能 力。
  
     關 系 數 據 庫 要 想 被 某 個Java 應 用 程 序 利 用, 首 先 需 要 解 決 兩 個 問 題。 第 一: 需 要 某 些 基 礎 的 中 間 件 來 建 立 與 數 據 庫 的 連 接, 向 數 據 庫 發 出SQL 查 詢 等 等; 第 二: 操 縱 數 據 庫 的 處 理 結 果 要 與 操 縱 任 何 一 種Java 信 息 一 樣 方 便 — — 作 為 一 個 對 象。 前 一 個 問 題 已 被SUN 及 幾 個 數 據 庫 產 商 解 決; 后 一 個 問 題 則 有 待 我 們 進 一 步 去 探 究。
  
     在 為 普 通 的 程 序 開 發 業 務 定 義 大 量 的APIs 這 項 工 作 上,SUN 一 直 保 持 著 與 許 多 軟 件 公 司 的 合 作 關 系。 在JDK1.1 APIs 中, JDBC 的API 是 最 早 建 立 起 來 的。 而 且, 它 已 得 到 了 為 數 眾 多 的 應 用。 這 些 應 用 中, 有 的 是100% 的 純Java, 有 的 則 是Java 和 其 它 程 序 的 混 合 體, 如: 用 現 有 的ODBC 數 據 源 進 行 連 接( 參 看 圖1)。JavaSoft 已 將 一 個 關 于 現 有 的JDBC 驅 動 程 序 的 介 紹 放 在 它 的Web 站 點 上(http://splash.javasoft.com/jdbc/jdbc.drivers.Html)。
   Java,Beans 和 關系數據庫 的 鏡像(圖一)
點擊查看大圖

  圖1 一 個 典 型 的JDBC 或JDBC/ODBC 配 置
   注 意: 此 圖 已 被 簡 化。 另 外 的 組 件 已 包 括 其 中( 如ODBD 驅 動 程 序)
  
  非 常 明 顯, 這 些 應 用 的 優 缺 點 取 決 于 你 的 環 境 和 設 置, 在 此 我 不 準 備 對 它 們 的 各 種 情 況 進 行 逐 一 論 述。 在 下 面 的 內 容 中, 我 們 假 定, 在 你 的 機 器 中 已 擁 有 某 種Java 開 發 環 境, 并 且 你 已 正 確 地 安 裝 并 測 試 過 某 個JDBC 驅 動 程 序, 或 者 運 用 過 某 種JDBC 驅 動 程 序 及SUN 的JDBC/ODBC 橋。
  
  JDBC API
   JDBC API 作 為 一 個 單 獨 的Java 包( 或 類 庫, 即java.sql) 出 現, 包 括 有 一 系 列 的 類。 這 些 類 提 供 了 處 理 某 個 關 系 數 據 庫 的 中 間 件。 本 質 上 講, 它 們 使 得 你 可 以 關 聯 某 個 數 據 庫, 并 向 其 發 出 查 詢。 你 可 以 對 這 些 查 詢 結 果 進 行 處 理, 檢 索 你 數 據 庫 的meta- 信 息(meta-information), 并 且 處 理 在 此 間 可 能 發 生 的 各 種 異 常 情 況。
  
   讓 我 們 來 看 一 個 簡 單 的JDBC 例 子, 看 一 看 應 用 了Java JDBC 之 后, 查 詢 會 得 到 怎 樣 的 簡 化。 表1 是 一 個 極 其 簡 單 的 數 據 庫。 在 清 單1 中 的 編 碼 是 一 段 最 簡 單 的 對 關 系 數 據 庫 進 行SQL 查 詢 所 需 的Java 語 句。
  Java,Beans 和 關系數據庫 的 鏡像(圖二)
   String ur1="jdbc:odbc:sample";
   String query="SELECT * FROM PERSON";
   boolean more;
   try
   {
   Class.forName("sun.jdbc.odbc.jdbcOdbcDriver");
   Connection con = DriverManager.getConnection(ur1,"sandor","guest");
   Statement stmt = con.createStatement();
   ResultSet rs = stmt.executeQuery(query);
   While (more = rs,next())
   {
     int number = rs.getInt("PERSON#");
     String firstName = rs.getString("FIRST_NAME");
     String lastName = rs.getString("LAST_NAME");
     System.out.PRintIn(number + " " + firstName + " " + lastName);
   }
   rs.close();
   stmt.close();
   con.close();
   }
   catch(SQLException ex)
   {
   ex.printStackTrace();
   }
  
  清 單1: 一 個 應 用 了JDBC 的SQL 查 詢
  
     這 段 編 碼 的 含 義 是: 先 裝 入SUN 的JDBC/ODBC 驅 動 程 序, 然 后 與 被jdbc:odbc:sample 指 定 的 數 據 庫 建 立 起 一 個 關 聯, 最 后 對 該 數 據 庫 進 行 一 個 簡 單 的SELECT 查 詢。 如 果 沒 有 遇 到 查 詢 異 常(SQLException), 程 序 將 循 環 地 從 結 果 集(ResultSet) 中 每 次 抽 出 一 條 數 據 庫 記 錄, 并 將 其 顯 示 在 屏 幕 上。
  
     好 了, 現 在 我 們 來 看 一 看 這 段 程 序 還 有 哪 些 不 足? 在 清 單1 的 這 類 程 序 中, 存 在 著 兩 個 根 本 性 的 錯 誤:
  
     1 . 這 種 編 碼 用 到 了 數 量 眾 多 的 數 據 庫meta- 信 息, 而 這 些 信 息 都 只 能 手 工 編 碼 到 程 序 中。 當 你 想 要 取 一 個 數 值 時, 你 必 須 提 前 知 道 你 將 取 到 的 數 值 是 一 個 整 數、 浮 點 數、 還 是 一 個 雙 精 度 數。 這 將 會 使 得 編 寫 一 個 可 以 處 理 任 何 一 個 數 據 庫 的 類 變 得 十 分 困 難; 并 且 每 一 個 數 據 庫 的 細 小 調 整 都 會 逼 你 去 仔 細 地 檢 查 和 修 改 程 序。
  
     2 . 數 據 庫 中 的 信 息 總 是 作 為 一 個 單 個 的RecordSet( 記 錄 集) 實 例 來 傳 遞, 而 這 種 實 例 并 不 是 一 個 真 正 的 對 象。RecordSet 類 ( 與 其 它 的 數 據 庫 類 封 裝 沒 什 么 差 別) 更 象 一 個 指 針 或 游 標, 借 助 方 法, 它 能 夠 提 供 存 取 數 據 信 息 的 途 徑。RecordSet 中 的 實 例 實 際 上 并 不 包 括 信 息, 它 們 僅 僅 表 示 獲 得 信 息 的 方 式。 這 正 說 明 了 當 你 要 調 用 另 外 的RecordSet 方 法 去 獲 取 某 些 真 實 的 數 據 信 息 的 時 候, 你 必 須 通 過RecordSet 去 做 更 多 的 工 作( 利 用RecordSet.NEXT() 去 移 動 指 針)。 實 際 上,JDBC 類 的 確 僅 僅 傳 遞 這 類 聯 系 松 散 的 字 段。 即 使 你 完 全 了 解 數 據 庫 的 所 有 內 部 細 節, 這 也 沒 有 任 何 價 值, 因 為 在Java 提 供 了 存 儲 和 處 理 信 息 的 方 法。
  
     所 以, 理 想 的 狀 態 是, 有 一 種 好 的 方 法, 能 夠 逐 一 地 從 數 據 庫 中 抽 取 記 錄 或 字 段( 通 過RecordSet), 并 且 將 取 到 的 信 息“ 填” 入 到 新 生 成 的 對 象 之 中。
  
     這 一 解 決 方 式 的 關 鍵 在 于 關 系 數 據 庫(RDB) 和 面 向 對 象 的 數 據 模 型(ODB) 之 間 的 相 似 性。RDB 中 的 表 和ODB 中 的 類 的 作 用 很 相 似, 而 記 錄 和 對 象 也 有 著 某 些 相 同 的 屬 性。 你 可 以 將 記 錄 看 作 是 用 來 初 始 化 某 個 對 象 的 數 據 元 素 的 數 據 組。 如 果 你 已 將 記 錄 從 數 據 庫 中 抽 取 出 來, 就 必 須 調 用 類 構 造 函 數 來 生 成 上 面 所 說 的 對 象。 若 能 夠 將 每 一 條 記 錄 自 動 地 傳 到 適 當 的 構 造 函 數 中, 就 可 以 輕 而 易 舉 地 由 記 錄 來 構 造 對 象。
  
     在 開 發 一 個 小 的 應 用 程 序 時, 有 可 能 將 每 一 個 記 錄 傳 遞 給 某 個 構 造 函 數, 以 此 來 生 成 新 的 對 象。 你 可 以 經 常 利 用 對 象 參 照 來 操 縱 從 數 據 庫 中 抽 取 的 任 何 數 據。 因 為 你 通 過RecordSet 所 得 到 的 每 一 個 對 象 最 終 都 是java.lang.Object 的 擴 充。 你 可 以 定 義 一 個BibClass, 使 其 具 有 各 類 的 共 同 屬 性,BigClass 類 操 作 將 利 用Java instanceof 算 子 來 實 時 決 定 運 行 中 所 遇 到 的 數 據 庫 信 息, 并 且 通 過 一 個 大 的switch 選 擇, 跳 到 相 應 的 程 序 段 中。
  
     你 也 可 以 定 義 一 個 相 似 的 帶 有 多 個 構 造 函 數 的BigClass, 每 個 構 造 函 數 有 差 別 不 太 大 的

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
精品国产成人在线| 久久精品电影一区二区| 91久久久国产精品| 日日骚久久av| 成人精品视频久久久久| 久久久久久久网站| 国模叶桐国产精品一区| 国产精品主播视频| 成人av.网址在线网站| 国产精品电影观看| 在线观看日韩欧美| 亚洲色图17p| 国产精品欧美日韩久久| 色噜噜狠狠狠综合曰曰曰| 精品久久久久久久久久| 亚洲人a成www在线影院| 揄拍成人国产精品视频| 在线精品91av| 欧美激情国产精品| 亚洲人成伊人成综合网久久久| 国产成人精品视| 色哟哟亚洲精品一区二区| 亚洲男人天堂视频| 国产精品自产拍在线观看中文| 欧美亚洲视频在线看网址| 欧美电影免费观看高清| 亚洲欧美变态国产另类| 欧美一区第一页| 欧美一级视频在线观看| 91av在线视频观看| 97精品国产91久久久久久| 亚洲视屏在线播放| 久久99久国产精品黄毛片入口| 不卡av在线网站| 热re99久久精品国产66热| 成人av在线网址| 国产精品久久久久久久久久99| 亚洲高清av在线| 懂色av中文一区二区三区天美| 亚洲最大福利网站| 欧美精品久久久久久久久| 欧美成人精品不卡视频在线观看| 日韩成人在线视频网站| 亚洲人成在线一二| 国产精品直播网红| 国产精品一区二区三区久久久| 久久久久久久久久久免费精品| 日韩精品在线播放| 久久精品一本久久99精品| 日韩精品在线免费观看| 成人在线小视频| 中文字幕欧美在线| 久久99久国产精品黄毛片入口| 亚洲国产欧美日韩精品| 欧美夫妻性生活xx| 北条麻妃99精品青青久久| 91av视频在线| 在线观看视频99| 538国产精品一区二区免费视频| 国产丝袜一区二区三区| 91在线观看免费高清完整版在线观看| 国产精品视频免费在线| 欧美成人激情视频| 亚洲另类欧美自拍| 色哟哟网站入口亚洲精品| 亚洲男人天堂网| 一色桃子一区二区| 91高潮精品免费porn| 在线观看精品自拍私拍| 久久久精品视频在线观看| 成人春色激情网| 欧美理论片在线观看| 国产日韩欧美在线视频观看| 亚洲精品日韩欧美| www亚洲欧美| 91精品久久久久久久久久| 日韩免费观看在线观看| 成人www视频在线观看| 欧美午夜宅男影院在线观看| 国产一区二区香蕉| 91免费看国产| 国产一区二区三区免费视频| 91社区国产高清| 日韩av大片在线| 清纯唯美亚洲综合| 久久精品久久久久久国产 免费| 亚洲xxxx在线| 欧美激情一区二区久久久| 92国产精品视频| 亚洲最大福利视频| 欧美黄色免费网站| 中文字幕9999| 亚洲bt欧美bt日本bt| 久久av资源网站| 26uuu久久噜噜噜噜| 久久久久久久久久久国产| 日本电影亚洲天堂| 欧美超级乱淫片喷水| 亚洲另类欧美自拍| 久久99久国产精品黄毛片入口| 亚洲第一色中文字幕| 国产精品看片资源| 超碰日本道色综合久久综合| 黑人狂躁日本妞一区二区三区| 欧美日韩一二三四五区| 国产成人拍精品视频午夜网站| 亚洲在线观看视频| 综合136福利视频在线| 中文字幕亚洲一区二区三区五十路| 九九九热精品免费视频观看网站| 亚洲国产精品一区二区三区| 北条麻妃一区二区三区中文字幕| 午夜精品美女自拍福到在线| 精品久久久国产精品999| 日本欧美国产在线| 伊人伊成久久人综合网站| 国产精品网红直播| 欧美香蕉大胸在线视频观看| 欧美激情精品久久久久久变态| 亚洲成人久久一区| 欧美一级电影久久| 国产精品专区一| 欧美极品在线播放| 人人澡人人澡人人看欧美| 538国产精品一区二区在线| 韩国19禁主播vip福利视频| 欧美黄色片免费观看| 国产精品久久久久久影视| 午夜精品一区二区三区在线视频| 日韩av在线一区二区| 国产精品精品久久久久久| 亚洲综合一区二区不卡| 成人黄色av免费在线观看| 一区二区三区 在线观看视| 久久天天躁狠狠躁夜夜av| 亚洲国产成人精品久久| 国产精品一区二区久久精品| 992tv成人免费影院| 亚洲国产中文字幕久久网| 日韩国产精品亚洲а∨天堂免| 国产日韩综合一区二区性色av| 麻豆乱码国产一区二区三区| 国产精品久久不能| 中文字幕精品久久久久| 7m精品福利视频导航| 亚洲精品视频免费在线观看| 日韩av男人的天堂| 亚洲欧美精品一区二区| 91精品国产高清久久久久久| 欧美日韩一区二区三区在线免费观看| 青青草原一区二区| 国产v综合v亚洲欧美久久| 成人欧美在线观看| 欧美一级淫片播放口| 国产精品视频26uuu| 97成人精品视频在线观看| 热99久久精品| 国产精品丝袜一区二区三区| 亚洲色图综合网| 欧美在线免费观看| 日韩精品免费在线播放| 性欧美亚洲xxxx乳在线观看| 日韩精品在线影院| 精品中文字幕在线观看|