Oracle第12章數(shù)據(jù)庫應用程序開發(fā).ppt_第1頁
Oracle第12章數(shù)據(jù)庫應用程序開發(fā).ppt_第2頁
Oracle第12章數(shù)據(jù)庫應用程序開發(fā).ppt_第3頁
Oracle第12章數(shù)據(jù)庫應用程序開發(fā).ppt_第4頁
Oracle第12章數(shù)據(jù)庫應用程序開發(fā).ppt_第5頁
已閱讀5頁,還剩38頁未讀 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

第12章數(shù)據(jù)庫應用程序開發(fā),主編:劉志成,本章學習導航,本章學習導航,本章學習要點,(1)C/S結構和B/S結構;(2)常用的數(shù)據(jù)庫訪問技術;(3)使用JDBC-ODBC橋訪問Oracle11g數(shù)據(jù)庫;(4)使用JDBCDriver訪問Oracle11g數(shù)據(jù)庫;(5)C#.NET中使用ODBC方式訪問Oracle11g數(shù)據(jù)庫;(6)C#.NET中使用OLEDB方式訪問Oracle11g數(shù)據(jù)庫;(7)C#.NET中使用OracleClient方式訪問Oracle11g數(shù)據(jù)庫。建議課時:8課時,12.1數(shù)據(jù)庫應用程序結構,概述,數(shù)據(jù)庫應用程序是指任何可以添加、查看、修改和刪除特定數(shù)據(jù)庫(如Oracle中的eBuy)中數(shù)據(jù)的應用程序。數(shù)據(jù)庫應用程序一般包括三大組成部分:一是為應用程序提供數(shù)據(jù)的后臺數(shù)據(jù)庫;二是實現(xiàn)與用戶交互的前臺界面;三是實現(xiàn)具體業(yè)務邏輯的組件。具體來說,數(shù)據(jù)庫應用程序的結構可依其數(shù)據(jù)處理及存取方式分為主機-多終端結構、文件型結構、C/S(客戶機/服務器)結構、B/S(瀏覽器/服務器)結構以及3層/多層結構等。,12.1數(shù)據(jù)庫應用程序結構,客戶機/服務器結構,客戶機/服務器結構的出現(xiàn)是為了解決費用和性能的矛盾,最簡單的C/S結構的數(shù)據(jù)庫應用由兩部分組成,即客戶應用程序和數(shù)據(jù)庫服務器程序。(1)伸縮性差。(2)性能較差。(3)重用性差。(4)移植性差。,12.1數(shù)據(jù)庫應用程序結構,瀏覽器/服務器結構,瀏覽器/服務器結構,是隨著Internet技術的興起,對C/S結構的一種變化或者改進的結構。在B/S結構下,用戶界面完全通過WWW瀏覽器實現(xiàn),一部分事務邏輯在前端實現(xiàn),但是主要事務邏輯在服務器端實現(xiàn)?;贐/S結構的軟件的系統(tǒng)安裝、修改和維護全在服務器端解決。用戶在使用系統(tǒng)時,僅僅需要一個瀏覽器就可運行程序的全部功能,真正實現(xiàn)“零客戶端”。B/S結構還提供了異種機、異種網和異種應用服務的開放性基礎,這種結構已成為當今應用軟件的首選體系結構。,12.1數(shù)據(jù)庫應用程序結構,C/SVSB/S,1支撐環(huán)境C/S結構一般建立在專用的小范圍內的局域網絡環(huán)境,局域網之間通過專門服務器提供連接和數(shù)據(jù)交換服務;B/S結構建立在廣域網之上的。2安全控制C/S結構一般面向相對固定的用戶群,對信息安全的控制能力很強。B/S結構建立在廣域網之上,面向不可知的用戶群,對安全的控制能力較弱。3程序架構C/S結構可以對權限進行多層次校驗,對系統(tǒng)運行速度較少考慮;B/S結構對安全以及訪問速度的多重的考慮建立在需要更加優(yōu)化的基礎之上,比C/S結構有更高的要求,B/S結構的程序架構是發(fā)展的趨勢。,12.1數(shù)據(jù)庫應用程序結構,C/SVSB/S,4可重用性C/S結構側重于程序的整體性,程序模塊的重用性不是很好;B/S結構一般采用多層架構,使用相對獨立的中間件實現(xiàn)相對獨立的功能,能夠很好地實現(xiàn)重用。5可維護性C/S結構處理出現(xiàn)的問題以及系統(tǒng)升級都比較難,一旦升級可能要求開發(fā)一個全新的系統(tǒng);B/S程序由組件組成,通過更換個別的組件,可以實現(xiàn)系統(tǒng)的無縫升級,系統(tǒng)維護開銷減到最小,用戶從網上自己下載安裝就可以實現(xiàn)升級。6用戶界面C/S結構大多是建立的Window平臺上,表現(xiàn)方法有限,對程序員普遍要求較高;B/S結構建立在瀏覽器上,有更加豐富、生動的表現(xiàn)方式與用戶交流,開發(fā)難度降低,開發(fā)成本下降。,12.1數(shù)據(jù)庫應用程序結構,3層/N層結構,(1)用戶界面層:實現(xiàn)用戶界面,并保證用戶界面的友好性、統(tǒng)一性。(2)業(yè)務邏輯層:實現(xiàn)數(shù)據(jù)庫的存取及應用程序的商業(yè)邏輯計算。(3)數(shù)據(jù)服務層:實現(xiàn)數(shù)據(jù)定義、存儲、備份和檢索等功能,主要由數(shù)據(jù)庫系統(tǒng)實現(xiàn)。,課堂案例1Java平臺Oracle數(shù)據(jù)庫程序開發(fā),學習使用ODBC-JDBC橋訪問Oracle數(shù)據(jù)庫、使用JDBC驅動程序直接訪問Oracle數(shù)據(jù)庫、在Java程序中調用Oracle數(shù)據(jù)庫中存儲過程的方法和一般步驟。,案例學習目標,ODBC數(shù)據(jù)源的配置、部署ojdbc6_g.jar包、連接Oracle數(shù)據(jù)庫、訪問Oracle數(shù)據(jù)庫、處理Oracle數(shù)據(jù)庫數(shù)據(jù)、編寫存儲過程、編寫Java程序、Java程序調用存儲過程。,案例知識要點,課堂案例1Java平臺Oracle數(shù)據(jù)庫程序開發(fā),JDBC概述,添加標題文字,JDBC(JavaDatabaseConnection)作為一種中間件,可以實現(xiàn)Java應用程序與數(shù)據(jù)庫之間的接口功能。SunMicrosystems公司已將JDBC作為JDK的一部分,包括這些JDBCAPI,使Java應用與數(shù)據(jù)庫通信。,教師演示講解,課堂案例1Java平臺Oracle數(shù)據(jù)庫程序開發(fā),案例完成步驟,添加標題文字,1注冊數(shù)據(jù)庫驅動程序(1)JDBC-ODBC橋接方式。Java應用程序訪問Oracle數(shù)據(jù)庫,我們可以通過配置數(shù)據(jù)源的方法來實現(xiàn),即ODBC方式。配置Oracle數(shù)據(jù)源后,應用程序再使用JDBC提供的編程接口,通過數(shù)據(jù)源名稱訪問指定類型的數(shù)據(jù)庫。JDBC使用驅動器管理器管理各種數(shù)據(jù)庫驅動程序,應用程序使用統(tǒng)一的方式訪問數(shù)據(jù)庫。(2)JDBC直接連接方式。即使用JDBC直接連接數(shù)據(jù)源的方法。,教師演示講解,課堂案例1Java平臺Oracle數(shù)據(jù)庫程序開發(fā),案例完成步驟,添加標題文字,2獲得數(shù)據(jù)庫連接(1)JDBC-ODBC橋接方式。Stringurl=jdbc:odbc:MyData;Stringuser=SCOTT;Stringpassword=123456;Connectionconn=DriverManager.getConnection(url,user,password);(2)JDBC直接連接方式。conn=DriverManager.getConnection(jdbc:oracle:thin:SD04:1521:EBUY,SCOTT,123456);其中,SD04表示服務器名稱,也可以使用IP地址代替,如;EBUY表示Oracle全局數(shù)據(jù)庫名稱;1521表示相應的連接端口。,教師演示講解,課堂案例1Java平臺Oracle數(shù)據(jù)庫程序開發(fā),案例完成步驟,添加標題文字,3發(fā)送和執(zhí)行SQL語句(1)Statement接口。Statementstat=conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_UPDATABLE);(2)PreparedStatement接口。PreparedStatement接口用于實現(xiàn)發(fā)送帶參數(shù)的預編譯SQL語句到數(shù)據(jù)庫并返回執(zhí)行結果的功能,預編譯意味著這些語句可以比單個語句更有效地執(zhí)行,尤其是在循環(huán)中重復執(zhí)行某條語句時。(3)CallableStatement接口。CallableStatement接口用于實現(xiàn)調用數(shù)據(jù)庫存儲過程的功能。使用CallableStatement接口既支持直接存儲過程調用,也支持帶占位符的存儲過程調用。,教師演示講解,課堂案例1Java平臺Oracle數(shù)據(jù)庫程序開發(fā),案例完成步驟,添加標題文字,4ODBC-JDBC橋訪問實例【例12-1】使用ODBC方式查詢Oracle數(shù)據(jù)庫,并顯示用戶方案SCOTT中商品表GOODS的信息。,教師演示講解,課堂案例1Java平臺Oracle數(shù)據(jù)庫程序開發(fā),案例完成步驟,添加標題文字,4ODBC-JDBC橋訪問實例【例12-1】使用ODBC方式查詢Oracle數(shù)據(jù)庫,并顯示用戶方案SCOTT中商品表GOODS的信息。,教師演示講解,課堂案例1Java平臺Oracle數(shù)據(jù)庫程序開發(fā),案例完成步驟,添加標題文字,基本步驟:(1)使用“importjava.sql.*;”引入JDBCAPI所在的包。(2)注冊Oracle數(shù)據(jù)庫驅動程序:Class.forName(sun.jdbc.odbc.JdbcOdbcDriver);(3)獲得和Oracle數(shù)據(jù)庫的連接:Connectionconn=DriverManager.getConnection(jdbc:odbc:MyData,SCOTT,123456);(4)發(fā)送SQL請求:Statementstat=conn.createStatement();ResultSetrs=stat.executeQuery(sQuery);(5)操作結果集對象。(6)關閉相關對象。,教師演示講解,課堂案例1Java平臺Oracle數(shù)據(jù)庫程序開發(fā),案例完成步驟,添加標題文字,5JDBC直接訪問實例【例12-2】使用JDBC方式查詢Oracle數(shù)據(jù)庫,并顯示用戶方案SCOTT的商品表GOODS中商品類別編號為“02”的商品信息。,教師演示講解,課堂案例1Java平臺Oracle數(shù)據(jù)庫程序開發(fā),案例完成步驟,添加標題文字,5JDBC直接訪問實例【例12-2】使用JDBC方式查詢Oracle數(shù)據(jù)庫,并顯示用戶方案SCOTT的商品表GOODS中商品類別編號為“02”的商品信息。,教師演示講解,課堂案例1Java平臺Oracle數(shù)據(jù)庫程序開發(fā),案例完成步驟,添加標題文字,6Java程序調用Oracle存儲過程【例12-3】編寫Java程序,調用Oracle數(shù)據(jù)庫中的存儲過程up_GetByID,實現(xiàn)根據(jù)商品的編號獲得商品的名稱和類別編號。,教師演示講解,課堂案例1Java平臺Oracle數(shù)據(jù)庫程序開發(fā),案例完成步驟,添加標題文字,6Java程序調用Oracle存儲過程【例12-3】編寫Java程序,調用Oracle數(shù)據(jù)庫中的存儲過程up_GetByID,實現(xiàn)根據(jù)商品的編號獲得商品的名稱和類別編號。,教師演示講解,課堂案例2.NET平臺Oracle數(shù)據(jù)庫程序開發(fā),學習使用.NET平臺連接Oracle數(shù)據(jù)庫、訪問Oracle數(shù)據(jù)庫、處理Oracle數(shù)據(jù)庫數(shù)據(jù)的方法。,案例學習目標,DataGridView控件綁定連接Oracle數(shù)據(jù)庫、ODBC方式訪問Oracle數(shù)據(jù)庫、OLEDB方式訪問Oracle數(shù)據(jù)庫、OracleClient方式訪問Oracle數(shù)據(jù)庫、.NET平臺調用Oracle存儲過程。,案例知識要點,課堂案例2.NET平臺Oracle數(shù)據(jù)庫程序開發(fā),ADO.NET概述,添加標題文字,ADO.NET提供對MicrosoftSQLServer等數(shù)據(jù)源以及通過OLEDB和XML公開的數(shù)據(jù)源的一致訪問。ADO.NET是重要的應用程序接口,用于在Microsoft.NET平臺中提供數(shù)據(jù)訪問服務。ADO.NET中,可以使用的數(shù)據(jù)提供程序主要包括以下幾種。(1)SQLServer.NETFramework數(shù)據(jù)提供程序;(2)OLEDB.NETFramework數(shù)據(jù)提供程序;(3)ODBC.NETFramework數(shù)據(jù)提供程序;(4)Oracle.NETFramework數(shù)據(jù)提供程序。,教師演示講解,課堂案例2.NET平臺Oracle數(shù)據(jù)庫程序開發(fā),ADO.NET結構,添加標題文字,教師演示講解,ADO.NET針對Oracle也特別推出了以Oracle為前綴的系列類,用戶需要在項目中引入System.Data.OracleClient.dll引用,并使用添加名稱空間命令:usingSystem.Data.OracleClient;,課堂案例2.NET平臺Oracle數(shù)據(jù)庫程序開發(fā),數(shù)據(jù)連接類,添加標題文字,教師演示講解,(1)構造連接類對象。構造連接類對象的格式為:OleDbConnectionconn=newOleDbConnection(連接字符串);OracleConnectionconn=newOracleConnection(連接字符串);OdbcConnectionconn=newOdbcConnection(連接字符串);使用OLEDB方式訪問Oracle數(shù)據(jù)庫的連接字符串形如:Provider=OraOLEDB.Oracle;DataSource=EBUY;UserID=SCOTT;Password=123456使用OracleClient方式訪問Oracle數(shù)據(jù)庫的連接字符串形如:DataSource=EBUY;UserID=SCOTT;Password=123456使用ODBC方式訪問Oracle數(shù)據(jù)庫的連接字符串形如:DSN=MyData;UID=SCOTT;PWD=123456,課堂案例2.NET平臺Oracle數(shù)據(jù)庫程序開發(fā),數(shù)據(jù)連接類,添加標題文字,教師演示講解,(2)連接類的常用方法顯式調用Open()方法打開連接,調用格式為:conn.Open();對數(shù)據(jù)庫訪問完畢后,需要顯式調用Close()方法及時關閉數(shù)據(jù)庫連接,調用格式為:conn.Close();但也有一個例外,當使用數(shù)據(jù)適配器類的Fill()方法或Update()方法操作數(shù)據(jù)庫時,不需要顯式調用Open()方法打開連接,ADO.NET會自動打開連接,操作完成后會自動關閉連接。(3)State屬性。連接類的State屬性標識連接對象的當前連接狀態(tài),當值為Open時,表示連接已經打開;當值為Closed時,表示連接已經關閉??梢酝ㄟ^對State屬性的判別來識別當前的連接狀態(tài)。,課堂案例2.NET平臺Oracle數(shù)據(jù)庫程序開發(fā),命令類,添加標題文字,教師演示講解,(1)構造命令類對象。構造命令類對象的格式如下:OleDbCommandcomm=newOleDbCommand(命令文本,連接對象);OracleCommandcomm=newOracleCommand(命令文本,連接對象);OdbcCommandcomm=newOdbcCommand(命令文本,連接對象);(2)命令類的常用方法。OleDbDataReaderdr=comm.ExecuteReader();OracleDataReaderdr=comm.ExecuteReader();OdbcDataReaderdr=comm.ExecuteReader();introws=comm.ExecuteNonQuery();,課堂案例2.NET平臺Oracle數(shù)據(jù)庫程序開發(fā),命令類,添加標題文字,教師演示講解,(3)Parameters屬性。方式一:comm.Parameters.Add(參數(shù)名稱,數(shù)據(jù)類型,長度).Value=值;方式二:OleDbParameterparam=newOleDbParameter(參數(shù)名稱,數(shù)據(jù)類型,長度);/或OracleParameterparam=newOracleParameter(參數(shù)名稱,數(shù)據(jù)類型,長度);/或OdbcParameterparam=newOdbcParameter(參數(shù)名稱,數(shù)據(jù)類型,長度);comm.Parameters.Add(param);,課堂案例2.NET平臺Oracle數(shù)據(jù)庫程序開發(fā),數(shù)據(jù)讀取器類,添加標題文字,教師演示講解,(1)填充數(shù)據(jù)行。數(shù)據(jù)讀取器類用于從數(shù)據(jù)源中讀取只進且只讀的數(shù)據(jù)流。所有數(shù)據(jù)讀取器類對象的基類均為DbDataReader類。填充數(shù)據(jù)讀取器對象的格式如下所示:OleDbDataReaderdr=comm.ExecuteReader();OracleDataReaderdr=comm.ExecuteReader();OdbcDataReaderdr=comm.ExecuteReader();(2)數(shù)據(jù)讀取器類的常用方法。數(shù)據(jù)讀取器類的Read()方法使數(shù)據(jù)指針向前移動一條記錄,返回類型為bool,如果返回值為false,則表示數(shù)據(jù)讀取器中沒有數(shù)據(jù)行。Read()方法通常用于循環(huán)讀取數(shù)據(jù)表的數(shù)據(jù)記錄。while(dr.Read()/依次處理每一條數(shù)據(jù)記錄Close()方法用于關閉數(shù)據(jù)讀取器對象,以釋放其占有的資源。,課堂案例2.NET平臺Oracle數(shù)據(jù)庫程序開發(fā),數(shù)據(jù)讀取器類,添加標題文字,教師演示講解,(3)數(shù)據(jù)讀取器類的常用屬性。數(shù)據(jù)讀取器類的HasRow屬性用于獲取對象中是否包含了數(shù)據(jù)行,為bool類型;FieldCount屬性用于獲取當前數(shù)據(jù)行的列數(shù);IsClosed屬性指示當前數(shù)據(jù)讀取器是否已經關閉。,課堂案例2.NET平臺Oracle數(shù)據(jù)庫程序開發(fā),數(shù)據(jù)適配器類,添加標題文字,教師演示講解,(1)構造數(shù)據(jù)適配器對象。構造數(shù)據(jù)適配器對象的格式如下:OleDbDataAdapterda=newOleDbDataAdapter(命令文本,連接對象);OracleDataAdapterda=newOracleDataAdapter(命令文本,連接對象);OdbcDataAdapterda=newOdbcDataAdapter(命令文本,連接對象);(2)數(shù)據(jù)適配器類的常用方法。數(shù)據(jù)適配器類的Fill()方法用于填充數(shù)據(jù)集,并返回填充的行數(shù),其使用格式為:da.Fill(數(shù)據(jù)集對象,表名);Update()方法用于更新數(shù)據(jù)表,并返回受影響的行數(shù),其使用格式為:da.Update(數(shù)據(jù)集,表名);,課堂案例2.NET平臺Oracle數(shù)據(jù)庫程序開發(fā),數(shù)據(jù)適配器類,添加標題文字,教師演示講解,(3)數(shù)據(jù)適配器類的常用屬性。SelectCommand屬性用于設置或獲取SQL語句或存儲過程,以從數(shù)據(jù)源中查詢數(shù)據(jù)記錄;InsertCommand屬性用于設置或獲取SQL語句或存儲過程,以向數(shù)據(jù)源中插入數(shù)據(jù)記錄;UpdateCommand屬性用于設置或獲取SQL語句或存儲過程,以更新數(shù)據(jù)源中的數(shù)據(jù)記錄;DeleteCommand屬性用于設置或獲取SQL語句或存儲過程,以刪除數(shù)據(jù)源中的數(shù)據(jù)記錄。,課堂案例2.NET平臺Oracle數(shù)據(jù)庫程序開發(fā),數(shù)據(jù)集類,添加標題文字,教師演示講解,數(shù)據(jù)集類是ADO.NET中一種最常用的數(shù)據(jù)存儲類,它的實例存儲數(shù)據(jù)庫中的信息在本地內存中的拷貝,可以修改這個本地拷貝,并通過數(shù)據(jù)適配器在數(shù)據(jù)集與數(shù)據(jù)庫之間同步這些改變。數(shù)據(jù)集類DataSet位于System.Data名稱空間,數(shù)據(jù)集對象可以表示數(shù)據(jù)表、行和列等數(shù)據(jù)結構,也可以表示XML數(shù)據(jù)。Tables屬性是數(shù)據(jù)集類的常用屬性,表示數(shù)據(jù)集中表的集合。一個數(shù)據(jù)集對象可以由若干個數(shù)據(jù)表對象組成,并通過索引運算。,課堂案例2.NET平臺Oracle數(shù)據(jù)庫程序開發(fā),案例完成步驟,添加標題文字,DataGridView控件綁定Oracle數(shù)據(jù)庫數(shù)據(jù)源詳細步驟略,教師演示講解,課堂案例2.NET平臺Oracle數(shù)據(jù)庫程序開發(fā),案例完成步驟,添加標題文字,ODBC方式訪問Oracle數(shù)據(jù)庫【例12-4】使用ODBC方式訪問Oracle數(shù)據(jù)庫,并在控制臺輸出用戶方案SCOTT中商品表GOODS的所有信息。,教師演示講解,課堂案例2.NET平臺Oracle數(shù)據(jù)庫程序開發(fā),案例完成步驟,添加標題文字,ODBC方式訪問Oracle數(shù)據(jù)庫【例12-4】使用ODBC方式訪問Oracle數(shù)據(jù)庫,并在控制臺輸出用戶方案SCOTT中商品表GOODS的所有信息。,教師演示講解,課堂案例2.NET平臺Oracle數(shù)據(jù)庫程序開發(fā),案例完成步驟,添加標題文字,OLEDB方式訪問Oracle數(shù)據(jù)庫【例12-5】使用OLEDB方式訪問Oracle數(shù)據(jù)庫,并在控制臺輸出用戶方案SCOTT商品表GOODS的所有信息。usingSystem.Data.OleDb;/引入OLEDB訪問Oracle方式

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論