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

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

J2EE1.4新特性之JDBC3.0的新特性

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

  1、JDBC3.0規范中數據庫連接池框架
  
  JDBC3.0規范中通過提供了一個支持數據庫連接池的框架,這個框架僅僅規定了如何支持連接池的實現,而連接池的具體實現JDBC 3.0規范并沒有做相關的規定。通過這個框架可以讓不同角色的開發人員共同實現數據庫連接池。
  
  通過JDBC3.0規范可以知道具體數據庫連接池的實現可以分為JDBC Driver級和application Server級。在JDBC Driver級的實現中任何相關的工作均由特定數據庫廠商的JDBC Drvier的開發人員來具體實現,即JDBC Driver既需要提供對數據庫連接池的支持同時也必須對數據庫連接池進行具體實現。而在Application Server級中數據庫連接池的實現中特定數據庫廠商的JDBC Driver開發人員和Application Server開發人員來共同實現數據庫連接池的實現(但是現在大多數Application Server廠商實現的連接池的機制和規范中提到有差異),其中特定數據庫廠商的JDBC Driver提供數據庫連接池的支持而特定的Application Server廠商提供數據庫連接池的具體實現。
  
  JDBC3.0規范規定了如下的類和接口來支持數據庫連接池的實現。
  
  javax.sql.ConnectionEvent
  javax.sql.ConnectionPoolDataSource
  javax.sql.PooledConnection
  javax.sql.ConnectionEventListener
  
  其中除javax.sql.ConnectionEvent是類,其它的均為接口。
  
  

   J2EE1.4新特性之JDBC3.0的新特性(圖一)
  圖1 JDBC3.0連接池框架的關系圖

  
  通過此圖可以大概的了解相關接口在一個典型的三層環境中應用程序的位置。
  
  2、檢索自動產生的要害字
  
  為了解決對獲取自動產生的或自動增加的要害字的值的需求,JDBC 3.0 API 現在將獲取這種值變得很輕松。要確定任何所產生的要害字的值,只要簡單地在語句的 execute() 方法中指定一個可選的標記,表示您有愛好獲取產生的值。您感愛好的程度可以是 Statement.RETURN_GENERATED_KEYS,也可以是 Statement.NO_GENERATED_KEYS。在執行這條語句后,所產生的要害字的值就會通過從 Statement 的實例方法 getGeneratedKeys() 來檢索 ResultSet 而獲得,ResultSet 包含了每個所產生的要害字的列,下面的示例創建一個新的作者并返回對應的自動產生的要害字。
  
  ……
  Statement stmt = conn.createStatement();
  // OBTain the generated key that results from the query.
  stmt.executeUpdate("INSERT INTO authors " +
  "(first_name, last_name) " +
  "VALUES (‘Ghq’, ‘Wxl’)",
  Statement.RETURN_GENERATED_KEYS);
  ResultSet rs = stmt.getGeneratedKeys();
  if ( rs.next() ) {
  // Retrieve the auto generated key(s).
  int key = rs.getInt();
  }
  ……
  
  3、返回多重結果
  
  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 對象將不會被關閉。
  
  下面展示的是一個處理多重打開結果的示例。
  
  ……
  String PRocCall;
  // Set the value of procCall to call a stored procedure.
  // …
  CallableStatement cstmt = connection.prepareCall(procCall);
  int retval = cstmt.execute();
  if (retval == false) {
  // The statement returned an update count, so handle it.
  // …
  } else { // ResultSet
  ResultSet rs1 = cstmt.getResultSet();
  // …
  retval = cstmt.getMoreResults(Statement.KEEP_CURRENT_RESULT);
  if (retval == true) {
  ResultSet rs2 = cstmt.getResultSet();
  // Both ResultSets are open and ready for use.
  rs2.next();
  rs1.next();
  // …
   }
  }
  ……
  
  4、在事務中使用 Savepoint
  
  也許在 JDBC 3.0 中最令人興奮的附加特點就是 Savepoint 了。JDBC 2 中的事務支持讓開發人員可以控制對數據的并發訪問,從而保證持續數據總是保持一致的狀態。可惜的是,有時候需要的是對事務多一點的控制,而不是在當前的事務中簡單地對每一個改變進行回滾。在JDBC 3.0 下,可以通過 Savepoint 獲得這種控制。Savepoint 接口答應您將事務分割為各個邏輯斷點,以控制有多少事務需要回滾。下圖3 將說明如何在事務中運用 Savepoint。
  
  

  J2EE1.4新特性之JDBC3.0的新特性(圖二)
  圖2 Savepoint 的直觀表示

  
  你或許不是經常需要使用 Savepoint。然而,在一種普遍的情況下 Savepoint 會發揮作用,那就是您需要作一系列的改變,但是在知道所有的結果之前不能確定應該保留這些改變的哪一部分。下面的代碼示例說明了如何使用 Savepoint 接口。
  
  ......
  conn.setAutoCommit(false);
  // Set a conservative transaction isolation level.
  conn.setTransactionIsolation(Connection.TRANSACTION_SERIALIZABLE);
  Statement stmt = conn.createStatement();
  int rows = stmt.executeUpdate( "INSERT INTO authors " +
  " (first_name, last_name) VALUES " +
  " ('Ghq', 'Wxl')");
  // Set a named savepoint.
  Savepoint svpt = conn.setSavepoint("NewAuthor");
  // …
  rows = stmt.executeUpdate( "UPDATE authors set type = 'fiction' " +
  "WHERE last_name = 'Wxl'");
  // …
  conn.rollback(svpt);
  // …
  // The author has been added, but not updated.
  conn.commit();
  ......
  
  5、其他的特性
  
  1)元數據 API
  
  元數據 API 已經得到更新,DatabaseMetaData 接口現在可以檢索 SQL 類型的層次結構,一種新的 ParameterMetaData 接口可以描述 PreparedStatement 對象中參數的類型和屬性。
  
  2)CallableStatements 中已命名的參數
  
  在 JDBC 3.0 之前,設置一個存儲過程中的一個參數要指定它的索引值,而不是它的名稱。 CallableStatement 接口已經被更新了,現在您可以用名稱來指定參數。
  
  3)數據類型的改變
  
  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() 來檢索的。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
成人亲热视频网站| 91久久久久久久久久久久久| 成人免费视频xnxx.com| 国产精品主播视频| 久久精品中文字幕电影| 久久久久久一区二区三区| 久久久免费精品视频| 一区二区福利视频| 成人亚洲综合色就1024| 欧美猛交免费看| 国产精品视频精品| 九九视频这里只有精品| 亚洲成人性视频| 国产精品99久久久久久白浆小说| 136fldh精品导航福利| 亚洲视频在线观看| 亚洲欧美精品在线| 久久久久久国产精品美女| 日韩美女主播视频| 欧美激情视频免费观看| 亚洲欧美日韩另类| 九九热最新视频//这里只有精品| 日韩电影免费观看在线观看| 国产欧美婷婷中文| 欧美高清在线视频观看不卡| 亚洲白拍色综合图区| 日韩精品在线第一页| 精品视频久久久久久久| 7m精品福利视频导航| 欧美激情一区二区三区高清视频| 亚洲国产另类 国产精品国产免费| 狠狠躁夜夜躁人人爽天天天天97| 亚洲人午夜精品免费| 欧美丝袜美女中出在线| 午夜精品99久久免费| 最近更新的2019中文字幕| 久久久久亚洲精品| 亚洲va欧美va在线观看| 欧美亚洲日本黄色| 欧美成人免费在线视频| 992tv成人免费视频| 综合欧美国产视频二区| 亚洲精品美女在线观看播放| 91国自产精品中文字幕亚洲| 亚洲视频精品在线| www.欧美免费| 亚洲国产精品成人av| 日韩电影中文 亚洲精品乱码| 亚洲激情在线观看视频免费| 中日韩美女免费视频网址在线观看| 91精品久久久久久综合乱菊| 日韩欧美第一页| 一区国产精品视频| 91网站在线免费观看| 国产午夜精品理论片a级探花| 欧美一级bbbbb性bbbb喷潮片| 欧美日韩精品在线观看| 欧美在线观看网址综合| 亚洲二区中文字幕| 亚洲国产日韩欧美在线动漫| 国产免费成人av| 精品香蕉一区二区三区| 欧美大片网站在线观看| 久久成人在线视频| 久久色精品视频| 日韩欧美第一页| 国产视频亚洲视频| 欧美在线一区二区三区四| 成人免费观看49www在线观看| 国产成人在线一区| 日韩av在线资源| 亚洲第一精品电影| 日日狠狠久久偷偷四色综合免费| 欧美日韩国产中字| 国产精品永久免费在线| 正在播放亚洲1区| 欧美理论电影在线观看| 国产精品爱久久久久久久| 亚洲女人被黑人巨大进入al| 国产在线视频91| 成人中文字幕在线观看| 97香蕉超级碰碰久久免费软件| 亚洲欧美国产制服动漫| 亚洲全黄一级网站| 久久精品一偷一偷国产| 亚洲一区二区久久| 亚洲国模精品一区| 亚洲老司机av| 亚洲va男人天堂| 中文字幕日韩精品在线| 亚洲天堂影视av| 久久久av免费| 日韩在线视频网站| 亚洲精品v天堂中文字幕| 国产主播欧美精品| 欧美激情在线观看| 久久久久久高潮国产精品视| 国产亚洲综合久久| 日韩欧美亚洲范冰冰与中字| 69久久夜色精品国产69| 欧美性生交xxxxxdddd| 亚洲伊人久久大香线蕉av| 黑丝美女久久久| 成人久久一区二区三区| 久久久精品欧美| 亚洲视屏在线播放| 国产亚洲精品激情久久| 国产精品久久久久不卡| 成人免费看黄网站| 国产精品第10页| 国产精品日韩精品| 91亚洲午夜在线| 欧美床上激情在线观看| 97久久国产精品| 欧美日韩xxxxx| 国内精品久久久久久久久| 激情亚洲一区二区三区四区| 2024亚洲男人天堂| 国产精品一区二区三区免费视频| 国产精品久久久久久av福利软件| 亚洲最大福利视频网站| 久久久欧美一区二区| 欧美成人激情视频免费观看| 国内精品小视频在线观看| 亚洲精品欧美日韩| 国产亚洲精品日韩| 国产精品av电影| 亚洲视频在线免费观看| 欧美精品在线网站| 国产香蕉精品视频一区二区三区| 国产精品日韩av| 久久免费国产精品1| 成人性生交大片免费看视频直播| 92国产精品久久久久首页| 疯狂做受xxxx高潮欧美日本| 欧美日韩国产123| 美女精品久久久| 国产精品久久77777| 97色在线播放视频| 亚洲欧美999| 精品小视频在线| 精品国产精品三级精品av网址| 日本亚洲欧洲色| 欧美精品福利在线| 国产精品扒开腿做爽爽爽视频| 国产香蕉一区二区三区在线视频| 国产精品永久免费观看| 92版电视剧仙鹤神针在线观看| 国产精品久久久久久久久久ktv| 日韩精品久久久久久福利| 国产精品成人品| 精品高清一区二区三区| 免费99精品国产自在在线| 精品综合久久久久久97| 国产精品久久久久久久久免费| 久久久久亚洲精品成人网小说| 日韩有码在线观看| 国产亚洲在线播放| 青青草国产精品一区二区| www.亚洲一区| 亚洲免费影视第一页| 中文字幕无线精品亚洲乱码一区| 亚洲人成网在线播放| 91九色视频导航|