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

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

JDBC3.0 新特性

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

  概述 java 數據庫連接 3.0 規范的新功能和改進之處
  Josh Heidebrecht(jheidebr@ca.ibm.com)
  軟件工程師,IBM
  2001 年 7 月
  Java 數據庫連接(Java Database Connectivity,JDBC)API 是作為 Java 2 標準版(Java 2 Standard Edition,J2SE)和 Java 2 企業版(Java 2 EnterPRise Edition,J2EE)平臺的一個要害部分出現的。它是一種主要的基于標準的機制,能讓 Java 語言通過編程來訪問關系數據庫,所以當 Java Community Process 發布一份新版本的規范時,開發人員一定會感愛好。在此,我們就 Sun Microsystems 最近發布的 JDBC 規范的提議最終草案(Proposed Final Draft)3.0 版本來總結一下它的一些新的主要功能。加入討論論壇,與作者和其他讀者分享您對本文的看法。
  介紹
  Java 數據庫連接(JDBC)3.0 規范建立在其原本穩固的基礎上,增加了幾個新功能以彌補原來功能不足的地方。無論是 java.sql 還是第一次出現的 javax.sql 軟件包,都會包含在還處于測試階段的 Java 1.4 版平臺中。在今年晚些時候它就會被正式發布,到時 Java 開發人員就能夠利用這些改進了,所以現在正是開始了解這些改變的好時候。
  
  我們會簡單地討論一下 JDBC 的設計師們為這個版本所考慮到的幾個設計目標。理解了設計師們的設計基本原理,我們就可以更好地去理解那些改變。我們會總結一下規范中的幾個新功能以便了解整個 API 是怎樣被改變的。另外,我們還會深入研究幾個最適用于應用程序開發人員的要害功能,以成功地協助您利用其新性能。
  
  設計目標
  設計 JDBC 3.0 規范的初衷主要是讓原先的 JDBC 規范下的功能更加完美。因此,這個新規范的設計指導原則之一就是要與現存的應用程序和驅動程序保持兼容性。所以,JDBC 2 的用戶可以放心,他們的應用程序能在 JDBC 3.0 下正確運行。另外,使用以前那些遭反對的方法寫進 JDBC 1 API 的代碼也可以繼續運行。
  
  隨著 J2EE 平臺迅速的日益流行,設計師們也想增強 JDBC 的可伸縮性。新增的語句池和增強的連接池支持離實現這個目標還很遠。此外,設計師們還仔細地考慮 JDBC 與新的連接器體系結構之間的關系,來繼續提高服務器上的 Java 技術。
  
  在 JDBC 2 開發的過程中,SQL99 還處在一種變化不定的情況下?,F在規范已經完成了,而且數據庫廠商已經采用了部分標準。所以自然地,JDBC 規范就跟著將自己與 SQL99 功能的一部分相統一。最新的 JDBC 規范已經采用了 SQL99 標準中那些已經被廣泛支持的功能,還有那些在五年內可能會獲得支持的功能。
  
  假如一個數據庫還不支持 JDBC 3.0 所支持的部分 SQL99 功能,驅動程序可以使用元數據 API 向應用程序開發人員表明:其底層數據庫不支持一部分 JDBC 功能。這一點答應數據庫廠商生產出相應的 JDBC 驅動程序,盡管他們可能不支持所有的功能。增加的兩種新的數據類型以及對事務的 Savepoint 的支持說明了兩個和 SQL99 有關的改變。
  
  新功能摘要
  
  元數據 API
  元數據 API 已經得到更新,DatabaseMetaData 接口現在可以檢索 SQL 類型的層次結構,一種新的 ParameterMetaData 接口可以描述 PreparedStatement 對象中參數的類型和屬性。
  
  CallableStatements 中已命名的參數
  在 JDBC 3.0 之前,設置一個存儲過程中的一個參數要指定它的索引值,而不是它的名稱。 CallableStatement 接口已經被更新了,現在您可以用名稱來指定參數。
  
  數據類型的改變
  JDBC 所支持的數據類型作了幾個改變,其中之一是增加了兩種新的數據類型。
  
  為了便于修改 CLOB(Character Large Object,字符型巨對象)、BLOB(Binary Large Object,二進制巨對象)和 REF(SQL 結構)類型的值,同名的數據類型接口都被更新了。接下來的是,因為我們現在能夠更新這些數據類型的值,所以 ResultSet 接口也被修改了,以支持對這些數據類型的列的更新,也包括對 ARRAY 類型的更新。
  
  增加的兩種新的數據類型是 java.sql.Types.DATALINK 和 java.sql.Types.BOOLEAN。新增的數據類型指的是同名的 SQL 類型。DATALINK 提供對外部資源的訪問或 URL,而 BOOLEAN 類型在邏輯上和 BIT 類型是等同的,只是增加了在語義上的含義。DATALINK 列值是通過使用新的 getURL() 方法從 ResultSet 的一個實例中檢索到的,而 BOOLEAN 類型是通過使用 getBoolean() 來檢索的。
  
  
  檢索自動產生的要害字
  為了解決對獲取自動產生的或自動增加的要害字的值的需求,JDBC 3.0 API 現在將獲取這種值變得很輕松。要確定任何所產生的要害字的值,只要簡單地在語句的 execute() 方法中指定一個可選的標記,表示您有愛好獲取產生的值。您感愛好的程度可以是 Statement.RETURN_GENERATED_KEYS,也可以是 Statement.NO_GENERATED_KEYS。在執行這條語句后,所產生的要害字的值就會通過從 Statement 的實例方法 getGeneratedKeys() 來檢索 ResultSet 而獲得。ResultSet 包含了每個所產生的要害字的列。清單 1 中的示例創建一個新的作者并返回對應的自動產生的要害字。
  
  清單 1. 檢索自動產生的要害字
  
  
  Statement stmt = conn.createStatement();
  
  // OBTain the generated key that results from the query.
  
  stmt.executeUpdate("INSERT INTO authors " +
  
  ′(first_name, last_name) " +
  
  "valueS (′George′, ′Orwell′)",
  
  Statement.RETURN_GENERATED_KEYS);
  
  ResultSet rs = stmt.getGeneratedKeys();
  
  if ( rs.next() ) {
  
  // Retrieve the auto generated key(s).
  
  int key = rs.getInt();
  
  }
  
  
  連接器關系
  大多數應用程序開發人員不需要知道 JDBC 和 J2EE 連結器體系結構之間的關系,就可以很好地使用 JDBC API。但是,由于 JDBC 3.0 規范已經考慮到這項新的體系結構,這使得開發人員能更好地理解 JDBC 在哪里適合 J2EE 標準,以及這個規范的發展方向是什么。
  
  J2EE 連結器體系結構指定了一組協議,答應企業的信息系統以一種可插入的方式連接到應用服務器上。這種體系結構定義了負責與外部系統連接的資源適配器。連接器服務提供者接口(The Connectors Service Provider Interface,SPI)恰好和 JDBC 接口提供的服務緊密配合。
  
  JDBC API 實現了連結器體系結構定義的三個協議中的兩個。第一個是將應用程序組件與后端系統相連接的連接治理,它是由 DataSource 和 ConnectionPoolDataSource 接口來實現的。第二個是支持對資源的事務性訪問的事務治理,它是由 XADataSource 來處理的。第三個是支持后端系統的安全訪問的安全性治理,在這點上,JDBC 規范并沒有任何對應點。盡管有最后那個不足,JDBC 接口仍能映射到連接器 SPI 上。假如一個驅動程序廠商將其 JDBC 驅動程序映射到連接器系統協議上,它就可以將其驅動程序部署為資源適配器,并馬上享受可插性、封裝和在應用服務器中部署的好處。這樣,一個標準的 API 就可以在不同種類的的企業信息系統中,供企業開發人員使用。
  
  ResultSet 可保持性
  一個可保持的游標(或結果),就是說該游標在包含它的事務被提交后,也不會自動地關閉。JDBC 3.0 增加了對指定游標可保持性的支持。要制定您 ResultSet 的可保持性,您必須在使用 createStatement()、prepareStatement() 或 prepareCall() 方法預備編寫一條語句時就這么做??杀3中钥梢允窍旅娉A恐械囊粋€。
  
  HOLD_CURSORS_OVER_COMMIT ResultSet 對象(游標)沒有被關閉;它們在提交操作得到顯式的或隱式的執行以后仍保持打開的狀態。
  CLOSE_CURSORS_AT_COMMIT ResultSet 對象(游標)在提交操作得到顯式的或隱式的執行后被關閉。
  
  總的來說,在事務提交之后關閉游標操作會帶來更好的性能。除非您在事務結束后還需要該游標,否則您最好在執行提交操作后將其關閉。因為規范沒有規定 ResultSet 的缺省的可保持性,所以具體行為還將取決于執行情況。然而,我希望在可以使用 JDBC 3.0 驅動程序時,大多數執行在事務結束后仍然會關閉游標。
  
  返回多重結果
  JDBC 2 規范的一個局限是,在任意時刻,返回多重結果的語句只能打開一個 ResultSet。作為 JDBC 3.0 規范中改變的一個部分,規范將答應 Statement 接口支持多重打開的 ResultSets。然而,重要的是 execute() 方法仍然會關閉任何以前 execute() 調用中打開的 ResultSet。所以,要支持多重打開的結果,Statement 接口就要加上一個重載的 getMoreResults() 方法。新式的方法會做一個整數標記,在 getResultSet() 方法被調用時指定前一次打開的 ResultSet 的行為。接口將按如下所示定義標記:
  
  CLOSE_ALL_RESULTS 當調用 getMoreResults() 時,所有以前打開的 ResultSet 對象都將被關閉。
  CLOSE_CURRENT_RESULT 當調用 getMoreResults() 時,當前的 ResultSet 對象將被關閉。
  KEEP_CURRENT_RESULT 當調用 getMoreResults() 時,當前的 ResultSet 對象將不會被關閉。
  
  清單 2 展示的是一個處理多重打開結果的示例。
  
  清單 2. 如何處理多重打開結果
  
  
  String procCall;
  
  // Set the value of procCall to call a stored procedure.
  
  // …
  
  
  CallableStatement cstmt = connection.prepareCall(procCall);
  
  int retval = cstmt.execute();

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
久久成人亚洲精品| 在线看国产精品| 精品国产一区久久久| 日韩成人在线视频观看| 国产精品中文在线| 国产欧美日韩中文| 久久综合伊人77777| 国模精品视频一区二区| 久久久久久网站| 国产精品久久久久久av| 青青在线视频一区二区三区| 久久久国产影院| 97在线观看视频国产| 欧美成人精品在线观看| 亚洲视频欧美视频| 91精品国产高清久久久久久91| 欧美精品一二区| 成人网在线视频| 国产精品免费看久久久香蕉| 国产日产久久高清欧美一区| 97精品视频在线| 黑人狂躁日本妞一区二区三区| 日本免费久久高清视频| 不卡av在线播放| 国产日本欧美视频| 美乳少妇欧美精品| 国产成人一区二区三区小说| 国产不卡在线观看| 久久精品2019中文字幕| 亚洲欧美国产一本综合首页| 亚洲精品欧美一区二区三区| 日韩av一区二区在线观看| 国产91精品视频在线观看| 色偷偷偷亚洲综合网另类| 日产精品99久久久久久| 精品夜色国产国偷在线| 久久免费视频这里只有精品| 国产美女直播视频一区| 欧美亚洲伦理www| 91在线视频九色| 日韩欧美一区视频| 4438全国成人免费| 69视频在线免费观看| 久久精品夜夜夜夜夜久久| 欧美激情免费在线| 欧美大学生性色视频| 国产伦精品一区二区三区精品视频| 久久久亚洲精选| 国产成人亚洲综合| 一区二区三区视频免费| 日韩精品在线视频观看| 日韩亚洲国产中文字幕| 亚洲精品一区中文| 国产日韩av高清| 久久精品99久久久香蕉| 欧美电影在线播放| 日本精品视频在线播放| 97在线视频免费观看| 色伦专区97中文字幕| 中文字幕无线精品亚洲乱码一区| 亚洲网站视频福利| 久久成人亚洲精品| 亚洲男人av电影| 欧美另类69精品久久久久9999| 国产精品狼人色视频一区| 欧美午夜精品久久久久久人妖| 久久影视免费观看| 国产精品一区二区女厕厕| 欧美日本精品在线| 97国产真实伦对白精彩视频8| 国产一区二区三区毛片| 日韩欧美精品免费在线| 日韩视频在线一区| 亚洲毛茸茸少妇高潮呻吟| 国产成人91久久精品| xxxx欧美18另类的高清| 亚洲最大成人在线| 欧美人与性动交a欧美精品| 97在线视频精品| 日韩电影大片中文字幕| 亚洲国产精品久久久久秋霞蜜臀| 久久久久久午夜| 97国产精品视频| 久久久久久999| 成人有码在线视频| 日本欧美在线视频| 亚洲自拍偷拍色片视频| 97成人精品视频在线观看| 亚洲三级免费看| 成人啪啪免费看| 国产精品久久久久福利| 久久久午夜视频| 68精品国产免费久久久久久婷婷| 久久久久久有精品国产| 日韩日本欧美亚洲| 国产精品一香蕉国产线看观看| 亚洲欧美激情在线视频| 欧美成人精品在线| 欧美精品999| 久久精品视频亚洲| 欧美高清在线视频观看不卡| 97国产一区二区精品久久呦| 久久精品久久久久久国产 免费| 久久久国产精品视频| 精品国产31久久久久久| 国产999视频| 欧美日韩国产va另类| 5278欧美一区二区三区| 亚洲自拍偷拍色片视频| 中文字幕精品www乱入免费视频| 日韩精品中文字幕久久臀| 精品激情国产视频| 91精品久久久久久久久久入口| 日韩成人激情在线| 久久成人av网站| 国产精品久久久久免费a∨| 国模精品视频一区二区三区| 国产成人鲁鲁免费视频a| 亚洲第一页在线| 国内免费久久久久久久久久久| 久久久久久久久久久av| 欧美精品生活片| 久久久精品999| 国产99久久精品一区二区| 97婷婷大伊香蕉精品视频| 亚洲级视频在线观看免费1级| 在线看福利67194| 91午夜理伦私人影院| 亚洲日本aⅴ片在线观看香蕉| 最近2019年中文视频免费在线观看| 91中文在线观看| 性欧美暴力猛交69hd| 国产精品劲爆视频| 日韩激情av在线免费观看| 揄拍成人国产精品视频| 91中文字幕在线观看| 久久久久久久网站| 日韩av免费看网站| 亚洲国产日韩欧美在线图片| 国产成人拍精品视频午夜网站| 成人免费视频在线观看超级碰| 66m—66摸成人免费视频| 国内揄拍国内精品| 尤物yw午夜国产精品视频明星| 国产精品欧美日韩一区二区| 中文字幕v亚洲ⅴv天堂| 琪琪第一精品导航| 久久综合亚洲社区| 在线日韩av观看| 亚洲欧美综合另类中字| 久久久久亚洲精品国产| 尤物九九久久国产精品的分类| 欧美精品中文字幕一区| 成人在线播放av| 98精品国产高清在线xxxx天堂| 国产精品夫妻激情| 久久精品久久久久久| 欧美理论电影在线播放| 亚洲欧洲在线播放| 久久免费精品日本久久中文字幕| 免费99精品国产自在在线| 欧美国产日韩一区二区在线观看| 国产精品免费观看在线| 亚洲欧美激情四射在线日|