劉維崗 (天津現代職業技術學院 天津300350)
隨著信息社會的到來,越來越多的管理從日常的手工轉向了數字化管理。比如:學生信息管理系統、圖書管理系統、科研課題管理系統等。這些系統的實現以及功能的完善,都離不開數據庫。隨著網絡的普及以及廣泛應用,人們的生活學習、生產等都與之密切相關。隨之而來的就是信息管理系統在網絡上的廣泛應用。如何開發出具有較高性能的基于網絡的信息管理系統?對于這一問題,我們只需要把最核心的技術解決了,那么這個基于網絡的信息管理系統的高效能的問題就可以很容易實現。如何實現對不同數據庫的訪問以及實現的方法,是本文主要闡述的內容。
ASP.NET是ASP的前身,它是微軟公司的一項技術,是一種對于嵌入在網頁中的腳本可由因特網服務器執行的服務器端腳本技術。ASP.NET是一種WEB應用程序開發平臺,它為用戶提供了完整的可視化開發環境,并在生產效率、靈活性和可擴展性、性能、安全性、完整性上更加完善,在操作及代碼編寫上更加簡捷、方便。
1.1.1 靈活性 ASP.NET與語言無關,可以選擇最適合應用的程序語言,也可以跨多種語言分割程序。
1.1.2 數據訪問的高效性 ASP.NET通過ADO.NET提供的DataGrid等數據庫組件可以直接和數據庫聯系。
1.1.3 簡易性 大量使用組件技術,從簡單的窗體提交到客戶身份驗證很容易實現。采用代碼托管簡化程序開發過程。
1.1.4 高效性 頁面只需要一次編譯后不需要重新編譯,直到該頁面被修改或Web應用程序重新啟動,這使得多次訪問時速度有了極大的提升。
1.1.5 ASP.NET具有更加完善的開發工具 可以使用微軟開發Visual Studio開發環境,使用ASP.NET控件進行高效的應用程序開發。
當用戶向服務器發送一個HTTP,服務器的IIS接收到請求后之后,第一步是加載不同的.dll文件,主要根據客戶端發出請求的頁面類型確定相應的.dll文件;第二步調用相應的處理模塊,根據不同的請求調用能夠處理這個請求的模塊。在ASP.NET中,用HttpHandler(HTTP處理程序組件)模塊來實現。例如請求是.aspx類型文件,在服務器端有默認的HttpHandler專門處理.aspx類型的文件。IIS在應答用戶請求處理文件之前,需先經過一些不同HttpModule的處理,這些都是系統默認的Modules(用于獲取當前應用程序的模塊集合)。然后才再將這條請求發送給能夠處理這個請求的模塊。這樣可以安全、高效、可控地完成用戶的請求。ASP.NET運行原理如圖1所示。

圖1 ASP.NET運行原理圖
ADO.NET是下一代ActiveX Data Objects(ADO)。它是.NET Framework中的一列類庫,是一種數據存取模型。具有可擴展性、WEB無狀態性。ADO.NET提供了到所有OLE-DB數據源的接口,讓開發人員可以在各種環境中對數據庫進行連接、檢索、操縱和更新。在ADO.NET中,大量復雜的數據操作的代碼被封裝起來。這樣在開發ASP.NET應用程序時,只需要編寫少量的代碼即可完成大量的操作。ADO.NET并不像C#.NET、Visual Basic.NET那樣是一種語言,ADO.NET是對象的集合。
ADO.NET 中主要包括 Connection、Command、DataReader、DataSet和DataAdapter對象。每個對象的主要功能如下:①Connection對象主要提供與數據庫的連接功能;②Command對象用于返回數據、修改數據、運行存儲過程以及發送或檢索參數信息的數據庫命令;③DataReader對象通過Command對象提供從數據庫檢索信息的功能,DataReader對象是以一種只讀的、向前的、快速的方式訪問數據庫;④DataSet是ADO.NET的核心對象,它是一個數據庫容器,可以把它當作是存在于內存的數據庫。DataSet是數據的內存駐留表示形式,它可以用于多個不同形式的數據源。DataAdapter對象提供連接DataSet對象和數據源的橋梁。
針對不同的數據庫訪問需求,ADO.NET為訪問數據源中的數據提供了兩種模式:①基于連接的訪問模式,可以使用DataReader對象來實現;②斷開連接模式,我們可以使用DataAdapter對象來實現。為了發揮ADO.NET的最佳性能和開發出高性能的應用程序,我們在開發時,需要根據自己的實際情況選擇合適的模式。
2.1.1 連接模式 這種模式是最常用、最基本的一種模式。在連接模式下,客戶機會一直保持和數據庫服務器的連接,然后讀取數據。所有數據庫的操作都需通過這個連接才能和后臺的數據源進行交互,這和ADO技術是一樣的。這種訪問模式是通過DataReader對象來實現的,在已經建立的數據連接的基礎上,DataReader對象提供了對數據庫的向前、只讀的在線數據訪問方式和進行遍歷。這種模式適合數據傳輸量少、系統規模不大、客戶機和服務器在同一網絡內的環境。ADO.NET的連接模式只能返回向前的、只讀的數據,這是由DataReader對象的特性決定的。一個典型的ADO.NET連接模式如圖2所示。

圖2ADO.NET連接模式
連接模式下數據訪問的步驟如下:①使用Connection對象連接數據庫并向數據庫索取數據。②索取到的數據存放在DataReader(數據閱讀器)對象中并進行讀取。③完成讀取操作后,關閉DataReader對象。④關閉Connection對象。
2.1.2 斷開連接模式 斷開連接模式是采用Dataset對象的數據訪問模式,DataSet是ADO.NET的中心概念,支持ADO.NET斷開式、分布式數據方案的核心對象。DataSet對象是創建在內存中的集合對象。它可以包含任意數量的數據表,以及所有表的約束、索引和關系,相當于在內存中的小型關系數據庫。通過DataAdapter對象對數據源中的數據進行檢索,將所需要的數據填充到DataSet對象的表中,DataSet中的數據表格可以單獨存放,也可以通過DataRelation對象在表格之間建立關聯,這樣增加了數據處理的靈活性。
在斷開連接模式中,服務器不需要維護和用戶之間的數據庫連接,只有當用戶需要將更新的數據傳回到服務器時再重新連接,這樣服務器的負擔大大減輕,并且可以同時支持更多并發的用戶訪問。在整個過程都需要DataSet對象的支持和配合,這是ADO.NET的非凡之處。斷開連接模式比較適合于數據量較大、系統節點較多、結構復雜的網絡。典型的ADO.NET斷開連接模式應用如圖3所示。

圖3 ADO.NET斷開連接模式應用
斷開連接模式下數據訪問的步驟如下:①使用Connection對象連接數據庫并獲取數據庫中的數據。②獲取到的數據存儲在DataAdapter(數據適配器)對象中并把數據填充到DataSet(數據集)對象中。③關閉Connection對象。④對用戶本地內存中的DataSet(數據集)對象中的數據進行各種操作。⑤操作完畢后,啟動Connection對象連接數據庫。⑥利用DataAdapter對象更新數據庫。⑦關閉Connection對象。
創建一個數據庫鏈路;請求一個記錄集合;把記錄集合暫存到DataSet;如果需要,返回第2步(DataSet可以容納多個數據集合);關閉數據庫鏈路;在DataSet上做所需要的操作。
當要連接到數據庫時,首先確定一個.NET數據提供程序。對于不同數據提供程序包含的類也不同。這些類能夠連接到數據源,高效地對數據進行各種操作。利用Connection對象可以連接到數據庫。
3.1.1 Connection類有4種:SqlConnection類的對象連接SQL Server數據庫;OracleConnection類的對象連接Oracle數據庫;OleDbConnection類的對象連接支持OLE DB的數據庫,如Access;OdbcConnection類的對象連接任何支持ODBC的數據庫。
3.1.2 使用Connection對象連接數據庫。實現數據庫連接一般可采用以下步驟:①創建Connection對象;②把連接字符串賦值給Connection對象的Connection-String屬性;③調用Connection對象的Open方法打開連接;④操作完畢后,調用Connection對象的Close方法關閉連接。
3.2.1 使用SqlConnection對象連接SQLSERVER數據庫
首先建立用于與SQLSERVER服務器連接的類。語法如下:SqlConnection con=newSqlConnection("Server= 服務器名;User Id=用戶;Pwd=密碼;DataBase=數據庫名稱");
下面的代碼通過ADO.NET連接到本地SQL Server中的mydata數據庫。

3.2.2 使用OleDbConnection對象連接OLE DB數據庫
連接Access數據庫的語法格式

3.2.3 使用OdbcConnection對象連接ODBC數據庫


對于數據庫中的數據操作可以通過Command對象來實現。Command類用于執行SQL命令或存儲過程。使用Connection對象與數據源建立連接后,使用Command類創建的對象進行對數據源的增減、刪改等操作,操作實現的方式可以是使用SQL語句或是使用存儲過程。使用Command類執行SQL命令一般可采用以下步驟:①創建Connection對象并設置要執行的SQL命令和所使用的當前連接;②用Connection對象的Open方法打開數據庫連接;③調用Command對象的相應方法執行SQL命令;④調用Connection對象的Close方法關閉連接。
以下對數據庫的操作以學生數據庫來實現。
3.3.1 從數據源中讀取數據 讀取數據一般有兩種方式,一種是DataReader對象來直接訪問,另外一種是通過DataSet和DataAdapter來訪問。
例如:

3.3.2 向數據庫中添加記錄 向數據庫中添加記錄,首先要創建SqlConnection和SqlCommand對象,然后打開數據數據庫連接,調用SqlCommand對象的ExecuteNonQuery方法完成插入操作,最后關閉數據庫連接。
例如:

3.3.3 更新數據庫記錄 更新數據庫記錄與添加數據庫記錄的操作基本一致,只要把插入記錄的SQL語句替換成更新記錄的SQL語句就可以了。
例如:

3.3.4 刪除數據庫記錄 刪除與添加和更新的步驟基本一致,只需要把相應的SQL語句改動一下即可。
例如:

隨著網絡的發展以及信息化的網絡普及,數據庫的應用已經越來越廣泛。作為信息管理系統中最核心的數據庫開發技術也越來越重要。ASP.NET作為一項Web應用程序開發技術得到開發者的歡迎。其中ADO.NET技術實現了高速的、安全的數據訪問。■
[1]劉曉宇.基于.N ET的數據庫訪問技術優化研究[J].軟件導刊,2011,10( 4):150-153.
[2]魏祖寬,江利娟,金在弘.數據庫訪問技術比較研究[J].計算機與現代化,2009(12):46-50,54.
[3]李維杰,孫乾君.SQ L Server2005數據庫原理與應用簡明教程[M].北京:清華大學出版社,2007.
[4]陳英學.A SP.N ET深入編程[M].北京:希望電子出版社,2001.
[5]陳會安.A SP.N ET2.0網頁制作徹底研究[M].第二版.北京:清華大學出版社,2007.
[6]蔣薇.基于A D O.N ET的數據訪問技術探索[J].儀器儀表學報,2009,30(6):32-35.
[7]張躍廷.C#數據庫系統開發案例精選[M].北京:人民郵電出版社,2007.
[8]曾長軍,朱劍鋒,劉坤.SQ L Server數據庫原理及應用[M].北京人民郵電出版社,2007:211.
[9]尼春雨,王國勝,紫寶杰.A SP.N ET+SQ L Server動態網站開發[M].北京:清華大學出版社,2009:165.
[10]華國棟,劉文予.基于A D O.N ET的數據庫訪問及其性能優化[J].計算機應用研究,2004(6):215-217.