• /  64
  • 下載費用: 9.90積分  

J2EE課件2012版第四章 JDBC.ppt

'J2EE課件2012版第四章 JDBC.ppt'
第四章 JDBC訪問多種數據庫的統一數據庫訪問接口概要JDBC概述JDBC驅動程序DriverManagerConnectionsStatementsResult Sets數據庫元數據JDBC概述JDBC 本身是個商標名而不是一個縮寫字“Java Database Connectivity”一種用于執行 SQL 語句的 Java API,由一組類和接口組成。為工具/數據庫開發人員提供了一個標準的 API,使他們能夠用純Java API 來編寫數據庫應用程序。采用 JDBC,不需要針對各種關系數據庫編寫不同的數據庫程序將 Java 和 JDBC 結合起來將使程序員只須寫一遍程序就可讓它在任何平臺上運行。JDBC體系結構JDBC數據庫驅動程序數據庫驅動有四種類型:Type 1:JDBC-ODBC BridgeType 2:JDBC-Native API BridgeType 3:JDBC-middlewareType 4:Pure JDBC driverJDBC-ODBC Bridge 橋接器驅動程序之一特色是必須在使用者端的計算機上事先安裝好ODBC驅動程序,然后通過JDBC-ODBC的調用方法,進而通過ODBC來存取數據庫。Application--->JDBC-ODBC  Bridge---->JDBC-ODBC  Library--->ODBC  Driver-->Database  適用于快速的原型系統,沒有提供JDBC驅動的數據庫如Access  JDBC-Native API Bridge橋接器驅動程序之一這類驅動程序也必須先在使用者計算機上先安裝好特定的驅動程序(類似ODBC),然后通過JDBC-Native API橋接器的轉換,把Java API調用轉換成特定驅動程序的調用方法,進而存取數據庫。利用開發商提供的本地庫直接與數據庫通信。  Application--->JDBC  Driver---->Native  Database  library---->Database  比A類性能略好。 JDBC-middleware好處:省去了在使用者計算機上安裝任何驅動程序的麻煩,只需在服務器端安裝好middleware,而middleware會負責所有存取數據庫必要的轉換。Application--->Jdbc  Driver----->java  middleware--->JDBC  Driver---->Database具有最大的靈活性,通常由那些非數據庫廠商提供。  Pure JDBC driver 這類型的驅動程序是最成熟的JDBC驅動程序,不但無需在使用者計算機上安裝任何額外的驅動程序,也不需要在服務器端安裝任何中介程序(middleware),所有存取數據庫的操作,都直接由驅動程序來完成。Application--->Jdbc  driver----->database  engine--->database最高的性能,通過自己的本地協議直接與數據庫引擎通信,具備在Internet裝配的能力。 JDBC APIJDBC 是一種低級 API ,是高級 API 的基礎JDBC 是個“低級”接口,用于直接調用 SQL 命令。在這方面功能極佳,并比其它的數據庫連接 API 易于使用。高級接口是“對用戶友好的”接口,它使用的是一種更易理解和更為方便的 API,這種 API 在幕后被轉換為諸如 JDBC 這樣的低級接口。JDBC API核心的 JDBC API 在包java.sql中包java.sql中主要的類和接口關系如圖包javax.sql在JDBC2.0中是可選的,JDBC3.0開始為絕大多數廠商支持javax.sql.DataSource 和 java.sql.Connection關系如圖JDBC APIJDBC API實現了四個基本的功能:建立與數據的連接、執行SQL語句和處理執行結果、關閉數據庫的連接。Driver接口DataSource接口DriverManager類Connection類Statement類PreparedStatement類 CallableStatement類ResultSet類ResultSetMetaData類DatabaseMetaData類Driver接口JDBC驅動程序必須實現Driver接口, 且該實現必須包含一個靜態的初始化塊〔a static initializer〕靜態的初始化塊使用DriverManager 注冊自身的一個新的實例…Driver接口…當使用Class.forName(“com.acme.jdbc.AcmeJdbcDriver”), 加載該驅動的實例時,靜態的代碼塊將自動的注冊該驅動的實例當DriverManager 試圖建立某個數據庫連接時, DriverManager 調用驅動程序的connect()方法,并把數據庫連接的URL傳遞給它。JDBC URL 提供了一種標識數據庫的方法,可以使相應的驅動程序能識別該數據庫并與之建立連接…Driver接口…URL 語法 jdbc::JDBC URL 中的協議總是 jdbc子協議用來標識一種特定種類的數據庫連接機制 的內容依賴于子協議,推薦的語法是: //hostname:port/subsubname例如URL: jdbc:mysql://localhost:3306/jpetstore?autoReconnect=true jdbc:odbc:fred…Driver接口“odbc” 子協議, 是一種特殊情況。用于指定 ODBC 風格的數據資源名稱的 URL 而保留的,并具有下列特性:允許在子名稱(數據資源名稱)后指定任意多個屬性值。odbc 子協議的完整語法為: jdbc:odbc:[;=]*因此,以下都是合法的 jdbc:odbc 名稱: jdbc:odbc:qeor7 jdbc:odbc:wombat jdbc:odbc:wombat;CacheSize=20;ExtensionCase=LOWER jdbc:odbc:qeora;UID=kgh;PWD=fooeyDriverManager類負責管理JDBC驅動程序。使用JDBC驅動程序之前,必須先將驅動程序加載并向DriverManager注冊后才可以使用,同時提供方法來建立與數據庫的連接。通過指定的URL查找合適的驅動DriverManager 關鍵方法 include:registerDrivergetConnection(String url)getConnection(String url, java.util.Properties prop)DataSource接口…建議用此種方式來獲取數據源的連接DataSource 對象表示一個數據源,并提供了該數據源的連接使用 DataSo。省略部分。 throws SQLException  //取得JDBC驅動程序的版本代號String getURL() throws SQLException  //取得連接數據庫的JDBC URLString getUserName() throws SQLException  //取得登錄數據庫的使用者帳號。。。更多的方法參考API文檔獲取最基本的數據庫信息(如數據庫表)public static void showTables(Connection connection) throws Exception { DatabaseMetaData meta = connection.getMetaData(); //獲取數據庫連接的元數據 //查詢連接的所有Table(如果需要查詢視圖等,可以在最后的數組中添加VIEW...,依此類推) ResultSet rsTable = meta.getTables(null, null, null, new String[] { "TABLE" }); //獲取到的數據是以ResultSet形式返回 while (rsTable.next()) { System.out.println(rsTable.getString(1)); //第一列是Database名稱 System.out.println(rsTable.getString(2)); //第二列是用戶名稱(有的表可能沒有對應的用戶) System.out.println(rsTable.getString(3)); //第三列就是表名稱 }}如何獲取Table的主鍵信息public static List getPrimaryKeys(Connection connection, String tableName) throws Exception {     ArrayList keyList = new ArrayList();     DatabaseMetaData meta = connection.getMetaData();     ResultSet rsKey = meta.getPrimaryKeys(null, null, tableName); //獲取制定表的主鍵列信息     while (rsKey.next())         keyList.add(rsKey.getString(4));     return keyList;} 獲取一個表中是外鍵列的名稱列表public static List getExportedKeys(Connection connection, String tableName) throws Exception {     ArrayList keyList = new ArrayList();     DatabaseMetaData meta = connection.getMetaData();     ResultSet rsKey = meta.getExportedKeys(null, null, tableName);     while (rsKey.next())         keyList.add(rsKey.getString(4));     return keyList;} 一個完整的例子package cn.edu.njust; import java.sql.Connection; import java.sql.DriverManager; import java.sql.Statement; import java.sql.DatabaseMetaData; public class DataConn {   public DataConn() {   } …一個完整的例子… public static void main(String[] args) {     try{ //加載驅動程序,下面的代碼為加載JDBD-ODBC驅動程序    Class.forName(“oracle.jdbc.driver.OracleDriver”); //建立連接,用適當的驅動程序連接到DBMS    String url=“jdbc:oracle:thin:@192.168.4.45:1521:oemrep”;     String user = “ums”;    String password = “rongji”; //用url創建連接    Connection con=DriverManager.getConnection(url,user,password); …一個完整的例子… //獲取數據庫的信息DatabaseMetaData dbMetaData = con.getMetaData(); //返回一個String類對象,代表數據庫的URL    System.out.println("URL:"+dbMetaData.getURL()+";");    //返回連接當前數據庫管理系統的用戶名。    System.out.println("UserName:"+dbMetaData.getUserName()+";");    //返回一個boolean值,指示數據庫是否只允許讀操作。    System.out.println("isReadOnly:"+dbMetaData.isReadOnly()+";");    //返回數據庫的產品名稱。 System.out.println("DatabaseProductName:"+dbMetaData.getDatabaseProductName()+";");    //返回數據庫的版本號。 System.out.println("DatabaseProductVersion:"+dbMetaData.getDatabaseProductVersion()+";");    //返回驅動驅動程序的名稱。    System.out.println("DriverName:"+dbMetaData.getDriverName()+";");   //返回驅動程序的版本號。    System.out.println("DriverVersion:"+dbMetaData.getDriverVersion());    …一個完整的例子  //關閉連接    con.close(); } catch (Exception e) { //輸出異常信息 System.err.println("SQLException :"+e.getMessage()); e.printStackTrace(); } }} 謝謝
關 鍵 詞:
ee 第四 j2ee 2012 jdbc
 天天文庫所有資源均是用戶自行上傳分享,僅供網友學習交流,未經上傳用戶書面授權,請勿作他用。
關于本文
本文標題:J2EE課件2012版第四章 JDBC.ppt
鏈接地址: http://www.476824.live/p-51617402.html
關于我們 - 網站聲明 - 網站地圖 - 資源地圖 - 友情鏈接 - 網站客服點擊這里,給天天文庫發消息,QQ:1290478887 - 聯系我們

本站為“文檔C2C交易模式”,即用戶上傳的文檔直接賣給(下載)用戶,本站只是中間服務平臺,本站所有文檔下載所得的收益歸上傳人(含作者)所有【成交的100%(原創)】。本站是網絡服務平臺方,若您的權利被侵害,侵權客服QQ:1290478887 歡迎舉報。

[email protected] 2017-2027 http://www.476824.live 網站版權所有

粵ICP備19057495號 

收起
展開
球探网即时蓝球比分 快乐10分预测 甘肃十一选五前三遗漏 做股票配资的风险在哪里 秒速时时彩是哪个国家 黑龙江36选7开奖结果走势图 湖北快三号码遗漏 股票涨停了可以卖吗 排列七开奖官网 甘肃11选5推荐 股票配资