(1.中南大學(xué) 信息科學(xué)與工程學(xué)院, 湖南 長(zhǎng)沙 410083;2.湖南科技學(xué)院 圖書(shū)館, 湖南 永州 425100)
ASP.NET 是一種建立在通用語(yǔ)言上的程式構(gòu)架,能被用于一臺(tái) Web服務(wù)器來(lái)建立強(qiáng)大的 Web應(yīng)用程式。ASP.NET提供許多比目前的Web研發(fā)模式強(qiáng)大的的優(yōu)勢(shì)。ASP.NET是Microsoft.NET的一部分,作為戰(zhàn)略產(chǎn)品,不僅僅是 Active Server Page (ASP) 的下一個(gè)版本,是微軟提供的新一代的Web開(kāi)發(fā)平臺(tái),它為開(kāi)發(fā)人員提供了一個(gè)統(tǒng)一的生成企業(yè)級(jí)Web應(yīng)用程序所需要的服務(wù)、編程模型和軟件基礎(chǔ)結(jié)構(gòu)。
ADO.NET提供了平臺(tái)互用性和可伸縮的數(shù)據(jù)訪問(wèn)。是一組用于和數(shù)據(jù)源進(jìn)行交互的面向?qū)ο箢?lèi)庫(kù)。通常情況下,數(shù)據(jù)源是數(shù)據(jù)庫(kù),但它同樣也能夠是文本文件、Excel表格或者XML文件。 它允許和不同類(lèi)型的數(shù)據(jù)源以及數(shù)據(jù)庫(kù)進(jìn)行交互。然而并沒(méi)有與此相關(guān)的一系列類(lèi)來(lái)完成這樣的工作。因?yàn)椴煌臄?shù)據(jù)源采用不同的協(xié)議,所以對(duì)于不同的數(shù)據(jù)源必須采用相應(yīng)的協(xié)議。一些老式的數(shù)據(jù)源使用 ODBC協(xié)議,許多新的數(shù)據(jù)源使用 OleDb協(xié)議,并且現(xiàn)在還不斷出現(xiàn)更多的數(shù)據(jù)源,這些數(shù)據(jù)源都可以通過(guò).NET的ADO.NET類(lèi)庫(kù)來(lái)進(jìn)行連接。
ADO.NET主要包含以下對(duì)象:SqlConnection對(duì)象、SqlCommand對(duì)象、sqlDataReader對(duì)象、DataSet對(duì)象、SqlDataAdapter對(duì)象。與數(shù)據(jù)源進(jìn)行交互的相關(guān)的公共方法都由這些對(duì)象提供。
C#語(yǔ)言是在C、C++和Java語(yǔ)言基礎(chǔ)上重新構(gòu)造的、語(yǔ)法與C++和Java語(yǔ)言都比較相似的、基于.NET框架的,一種完全面向?qū)ο蟮?、?lèi)型安全的編程語(yǔ)言,也是.NET的首選編程語(yǔ)言。從開(kāi)發(fā)效率來(lái)講,C#語(yǔ)言為應(yīng)用程序開(kāi)發(fā)人員提供了快速的開(kāi)發(fā)手段,但又不犧牲C++語(yǔ)言的特點(diǎn)和優(yōu)勢(shì)。從繼承性來(lái)講,C#語(yǔ)言在更高層次上重新實(shí)現(xiàn)了 C和 C++語(yǔ)言。從語(yǔ)法形式和易用性來(lái)講,C#語(yǔ)言幾乎綜合了目前流行的所有高級(jí)語(yǔ)言的優(yōu)點(diǎn),提供了一種語(yǔ)法優(yōu)雅、功能完善而又容易使用的外在表現(xiàn)形式。作為.NET的核心編程語(yǔ)言,c#為程序員提供快速便捷地創(chuàng)建基于Microsoft .NET平臺(tái)的解決方案。
4.1 數(shù)據(jù)庫(kù)常用操作具體分析
在WEB項(xiàng)目中經(jīng)常會(huì)對(duì)數(shù)據(jù)庫(kù)進(jìn)行各種操作,經(jīng)過(guò)分析會(huì)發(fā)現(xiàn)數(shù)據(jù)庫(kù)常用的操作主要可分為三類(lèi):建立、關(guān)閉數(shù)據(jù)庫(kù)的連接;執(zhí)行沒(méi)有返回值的SQL語(yǔ)句和存儲(chǔ)過(guò)程;執(zhí)行有返回值的SQL語(yǔ)句和存儲(chǔ)過(guò)程。再對(duì)以上三種情況進(jìn)行分析,第一類(lèi)操作情況比較簡(jiǎn)單,主要有兩種:建立連接數(shù)據(jù)庫(kù)、關(guān)閉數(shù)據(jù)庫(kù)的連接;第二類(lèi)操作的情況:執(zhí)行無(wú)返回值的SQL語(yǔ)句、執(zhí)行執(zhí)行無(wú)返回值的存儲(chǔ)過(guò)程。第三種情況比較復(fù)雜,因?yàn)樵诰唧w的項(xiàng)目當(dāng)中會(huì)根據(jù)不同的需要返回不同的數(shù)據(jù)類(lèi)型的值,根據(jù)返回值類(lèi)型的不同主要可分為以下幾種情況:返回指定Sql語(yǔ)句的SqlDataReade、返回指定Sql語(yǔ)句的DataSet、返回指定Sql語(yǔ)句的DataTable等。以上只是簡(jiǎn)單分析了數(shù)據(jù)庫(kù)常用操作,在后兩種操作當(dāng)中可以繼續(xù)分為帶參數(shù)和不帶參數(shù)兩種情況,情況更為復(fù)雜。
4.2 實(shí)現(xiàn)數(shù)據(jù)庫(kù)操作通用類(lèi)的必要性分析
在ASP.NET中利用C#語(yǔ)言開(kāi)發(fā)任何WEB項(xiàng)目都離不開(kāi)ADO.NET提供的數(shù)據(jù)庫(kù)訪問(wèn)技術(shù)的支持。在以上分析中ADO.NET在具體的使用進(jìn)行過(guò)程中情況卻比較復(fù)雜,在不同的項(xiàng)目或者在同一項(xiàng)目的不同應(yīng)用中可能會(huì)使用ADO.NET中不同的對(duì)象和不同的方法,為了適應(yīng)不同的項(xiàng)目和不同應(yīng)用的需要非常有必要利用 ADO.NET實(shí)現(xiàn)一個(gè)可移植的數(shù)據(jù)庫(kù)操作通用類(lèi)。
在對(duì)數(shù)據(jù)庫(kù)常用操作進(jìn)行具體分析之后,根據(jù)這些情況本文中使用C#語(yǔ)言建立一個(gè)SQL server數(shù)據(jù)庫(kù)為例數(shù)據(jù)庫(kù)通用操作類(lèi)。
數(shù)據(jù)庫(kù)通用操作類(lèi)中主要方法有:建立與數(shù)據(jù)庫(kù)連接的方法 openConnection、關(guān)閉與數(shù)據(jù)庫(kù)連接的方法closeConnection、執(zhí)行帶參數(shù)存儲(chǔ)過(guò)程 ExecutePorcedure、執(zhí)行帶參數(shù)SQL語(yǔ)句返回一個(gè)dataReader對(duì)象dataReader、執(zhí)行帶參數(shù)SQL語(yǔ)句返回dataTable對(duì)象dataTable、執(zhí)行帶參數(shù)SQL語(yǔ)句返回一個(gè)dataSet對(duì)象DataSet dataSet等,基本可以滿(mǎn)足不同項(xiàng)目中的不同應(yīng)用。
數(shù)據(jù)庫(kù)通用操作類(lèi)部分代碼(C#)如下:
利用面向?qū)ο笳Z(yǔ)言的方法重載等技術(shù),數(shù)據(jù)庫(kù)通用操作類(lèi)考慮了輸入?yún)?shù)個(gè)數(shù)不同、輸入?yún)?shù)類(lèi)型不通、有或者無(wú)返回值、有返回值但返回值類(lèi)型不同等各種情況,可以滿(mǎn)足ASP.NET中對(duì)數(shù)據(jù)庫(kù)的各種操作的需求,在具體應(yīng)用中只需要適當(dāng)調(diào)用其中相應(yīng)的方法即可,充分體現(xiàn)了面向?qū)ο蟪绦蛟O(shè)計(jì)的思想,大大提高代碼分離程度和代碼重用率,更加利于網(wǎng)站的后期維護(hù)和再開(kāi)發(fā)。
[1]張麗.一個(gè)基于 ASP.NET的數(shù)據(jù)庫(kù)操作類(lèi)的設(shè)計(jì)與實(shí)現(xiàn)[J].華南金融電腦,2008.
[2]李勇平,陳峰波.ASP.NET(C#)基礎(chǔ)教程[M].清華大學(xué)出版社,2006.