- SQL Server實用教程(SQL Server 2008版)
- 鄭阿奇編著
- 2986字
- 2018-12-30 11:37:51
1.3 數據庫應用系統
1.3.1數據庫的連接方式
客戶端應用程序或應用服務器向數據庫服務器請求服務時,必須首先和數據庫建立連接。雖然不同的RDBMS都遵循SQL標準,但不同廠家開發的RDBMS有差異,如存在適應性和可移植性等方面的問題。因此,人們開始研究和開發連接不同RDBMS的通用方法、技術和軟件。
1.ODBC數據庫接口
ODBC即開放式數據庫互連(Open DataBase Connectivity),是微軟公司推出的一種實現應用程序和關系數據庫之間通信的接口標準。符合標準的數據庫就可以通過SQL語言編寫的命令對數據庫進行操作,但只針對關系數據庫。目前所有的關系數據庫都符合該標準(如SQL Server, Oracle, Access, Excel等)。
ODBC本質上是一組數據庫訪問API(應用程序編程接口),它由一組函數調用組成,核心是SQL語句,其結構如圖1.8所示。

圖1.8 ODBC數據庫接口
在具體操作時,首先必須用ODBC管理器注冊一個數據源。管理器根據數據源提供的數據庫位置、數據庫類型及ODBC驅動程序等信息,建立起ODBC與具體數據庫的聯系。這樣,只要應用程序將數據源名提供給ODBC, ODBC就能建立起與相應數據庫的連接。
2.OLE DB數據庫接口
OLE DB即數據庫鏈接和嵌入對象(Object Linking and EMBedding DataBase)。OLE DB是微軟提出的基于COM思想且面向對象的一種技術標準,其目的是提供一種統一的數據訪問接口來訪問各種數據源。
這里所說的“數據”除了標準的關系型數據庫中的數據之外,還包括郵件數據、Web上的文本或圖形、目錄服務(Directory Services)、主機系統中的文件和地理數據以及自定義業務對象等。
OLE DB標準的核心內容就是,提供一種相同的訪問接口,使得數據的使用者(應用程序)可以使用同樣的方法訪問各種數據,而不用考慮數據的具體存儲地點、格式或類型,其結構如圖1.9所示。

圖1.9 OLE DB數據庫接口
3.ADO數據庫接口
ADO(ActiveX Data Objects)是微軟公司開發的基于COM的數據庫應用程序接口,通過ADO連接數據庫,可以靈活地操作數據庫中的數據。
圖1.10所示為應用程序通過ADO訪問SQL Server數據庫接口。從圖中可看出,使用ADO訪問SQL Server數據庫有兩種途徑:一種是通過ODBC驅動程序,另一種是通過SQL Server專用的OLE DB Provider,后者有更高的訪問效率。

圖1.10 ADO訪問SQL Server的接口
隨著網絡技術的發展,網絡數據庫以及相關的操作技術也越來越多地應用到實際中,而數據庫操作技術也在不斷地發展完善。ADO對象模型進一步發展成了ADO.NET。ADO.NET是.NET FrameWork SDK中用于操作數據庫的類庫總稱。ADO.NET相對于ADO的最大優勢在于,對數據的更新修改可在與數據源完全斷開連接的情況下進行,然后再把數據更新的結果和狀態傳回到數據源,這大大減少了過多的連接對數據庫服務器資源的占用。
4.ADO.NET數據庫接口
ASP.NET使用ADO.NET數據模型。該模型從ADO發展而來,但它不只是對ADO的改進,而是采用了一種全新的技術。主要表現在以下幾個方面。
(1)ADO.NET不是采用ActiveX技術,而是與.NET框架緊密結合的產物。
(2)ADO.NET包含對XML標準的完全支持,這對于跨平臺交換數據具有重要的意義。
(3)ADO.NET既能在與數據源連接的環境下工作,又能在斷開與數據源連接的條件下工作。特別是后者,非常適合于網絡應用的需要。因為在網絡環境下,保持與數據源連接,不符合網站的要求,不僅效率低,付出的代價高,而且常常會引發多個用戶同時訪問帶來的沖突。因此ADO.NET系統集中主要精力來解決在斷開與數據源連接的條件下的數據處理問題。
ADO.NET提供了面向對象的數據庫視圖,并且在ADO.NET對象中封裝了許多數據庫屬性和關系。最重要的是,ADO.NET通過多種方式封裝和隱藏了很多數據庫訪問的細節。用戶可以完全不知道對象在與ADO.NET對象交互,也不用擔心數據移動到另外一個數據庫或者從另一個數據庫獲得數據的細節問題。圖1.11所示為ADO.NET架構總覽。

圖1.11 通過ADO.NET訪問數據庫的接口模型
數據集是實現ADO.NET斷開式連接的核心,從數據源讀取的數據先緩存到數據集中,然后被程序或控件調用。這里的數據源可以是數據庫或者XML數據。
數據提供器用于建立數據源與數據集之間的聯系,它能連接各種類型的數據,并能按要求將數據源中的數據提供給數據集,或者從數據集向數據源返回處理后的數據。
5.JDBC數據庫接口
JDBC(Java DataBase Connectivity)是Java Soft公司開發的一組Java語言編寫的用于數據庫連接和操作的類和接口,可為多種RDBMS提供統一的訪問方式。通過JDBC對數據庫的訪問包括4個主要組件:Java應用程序、JDBC驅動器管理器、驅動器和數據源。
在JDBC API中有兩層接口:應用程序層和驅動程序層,前者使開發人員可以通過SQL調用數據庫和取得結果,后者處理與具體數據庫驅動程序相關的所有通信。
使用JDBC接口對數據庫操作有如下優點:
(1)JDBC API與ODBC十分相似,有利于用戶理解。
(2)使編程人員從復雜的驅動器調用命令和函數中解脫出來,而致力于應用程序功能的實現。
(3)JDBC支持不同的關系數據庫,增強了程序的可移植性。
使用JDBC的主要缺點:訪問數據記錄的速度會受到一定影響;此外,JDBC結構中包含了不同廠家的產品,這給數據源的更改帶來了較大麻煩。
6.數據庫連接池技術
網絡環境下的數據庫應用,由于用戶眾多,使用傳統的JDBC方式進行數據庫連接,系統資源開銷過大,這成為制約大型企業級應用效率的瓶頸,而采用數據庫連接池技術對數據庫連接進行管理,可以大大提高系統的效率和穩定性。
1.3.2 客戶-服務器(C/S)模式應用系統
Microsoft公司開發的SQL Server數據庫管理系統是當前最流行的數據庫管理系統。數據庫管理系統通過命令和適合專業人員的界面來操作數據庫。
對于SQL Server 2008數據庫管理系統,用戶只需要在SQL Server 2008的SQL Server Management Studio管理工具中輸入SQL命令,系統執行的結果就會返回到該工具上并顯示出來。用戶還可以直接通過該工具以界面方式操作數據庫。
對于一般的數據庫應用系統,除了數據庫管理系統外,需要設計適合普通人員操作數據庫的界面。目前,流行的開發數據庫界面的工具主要包括Visual BASIC、Visual C++、Visual FoxPro、Delphi、PowerBuilder等。數據庫應用程序與數據庫、數據庫管理系統之間的關系如圖1.12所示。

圖1.12 數據庫應用程序與數據庫、數據庫管理系統之間的關系
從圖中可看出,當應用程序需要處理數據庫中的數據時,首先向數據庫管理系統發送一個數據處理請求。數據庫管理系統接收到這一請求后,對其進行分析,然后執行數據操作,并把操作結果返回給應用程序。
由于應用程序直接與用戶打交道,而數據庫管理系統不直接與用戶打交道,所以應用程序被稱為“前臺”,而數據庫管理系統被稱為“后臺”。由于應用程序向數據庫管理系統提出服務請求,故通常稱為客戶程序(Client);而數據庫管理系統為其他應用程序提供服務,故通常稱為服務器程序(Server),又將這種操作數據庫模式稱為客戶-服務器(C/S)模式。
應用程序和數據庫管理系統可以運行在同一臺計算機上(單機方式),也可以運行在網絡方式下。在網絡方式下,數據庫管理系統在網絡上的一臺主機上運行,應用程序可以在網絡上的多臺主機上運行,即一對多的方式。例如,用Visual Basic開發的客戶-服務器(C/S)模式的學生成績管理系統的學生信息輸入界面如圖1.13所示。

圖1.13 C/S模式的學生成績管理系統界面
1.3.3 三層客戶-服務器(B/S)模式應用系統
基于Web的數據庫應用采用三層客戶-服務器模式,也稱為B/S結構。第一層為瀏覽器,第二層為Web服務器,第三層為數據庫服務器。瀏覽器是用戶輸入數據和顯示結果的交互界面。用戶在瀏覽器表單中輸入數據,然后將表單中的數據提交并發送到Web服務器。Web服務器應用程序接收并處理用戶的數據,通過數據庫服務器,從數據庫中查詢需要的數據(或把數據錄入數據庫)并返回給Web服務器。Web服務器再把返回的結果插入HTML頁面,傳送到客戶端,在瀏覽器中顯示出來。三層客戶-服務器結構如圖1.14所示。

圖1.14 三層客戶-服務器結構
例如,用ASP.NET開發的三層客戶-服務器(B/S)模式的學生成績管理系統的學生信息更新頁面如圖1.15所示。

圖1.15 B/S模式的學生成績管理系統頁面
- Python金融數據分析
- Visual C++串口通信技術詳解(第2版)
- Apex Design Patterns
- SSM輕量級框架應用實戰
- Modern JavaScript Applications
- Scala編程實戰(原書第2版)
- RSpec Essentials
- Mastering openFrameworks:Creative Coding Demystified
- Mobile Device Exploitation Cookbook
- Odoo 10 Implementation Cookbook
- SciPy Recipes
- ASP.NET 4.0 Web程序設計
- AI自動化測試:技術原理、平臺搭建與工程實踐
- JavaScript編程精解(原書第2版)
- 你真的會寫代碼嗎