孫光懿
(天津音樂學(xué)院 圖書與信息中心,天津 300171)
ASP.NET[1-3]是一款全新的腳本語(yǔ)言,它將其他WEB語(yǔ)言的優(yōu)勢(shì)融入其中。作為.NET Framework的一部分,ASP.NET擁有眾多服務(wù)器控件,并且其中的頁(yè)面總是先被通用語(yǔ)言運(yùn)行庫(kù)(內(nèi)存中的一段代碼,和JAVE虛擬機(jī)的作用類似)編譯后再被執(zhí)行。因此,ASP.NET的誕生,不僅使編程人員開發(fā)動(dòng)態(tài)網(wǎng)站的工作變得更加容易便捷,而且也大幅提高了動(dòng)態(tài)網(wǎng)站頁(yè)面的處理和響應(yīng)速度。與其它傳統(tǒng)WEB語(yǔ)言如ASP、JSP相比,ASP.NET具有高安全性、高擴(kuò)展性,支持多種語(yǔ)言、支持移動(dòng)終端設(shè)備,便于部署管理、便于代碼調(diào)試與跟蹤、便于技術(shù)人員掌握,兼容性強(qiáng)等特點(diǎn)。經(jīng)過近十多年的不斷完善發(fā)展,現(xiàn)如今已有越來(lái)越多的單位采用ASP.NET技術(shù)開發(fā)WEB應(yīng)用程序。在開發(fā)過程中,最核心也是最重要的一步就是與所采用的數(shù)據(jù)庫(kù)建立連接,只有這樣才能保證終端用戶使用瀏覽器,正常訪問數(shù)據(jù)庫(kù)中的信息。
在實(shí)際應(yīng)用中,ASP.NET通常使用類別庫(kù)中的ADO.NET數(shù)據(jù)存取元件,與各主流數(shù)據(jù)庫(kù)相連接,其中與ACCESS數(shù)據(jù)庫(kù)和SQL Server數(shù)據(jù)庫(kù)連接最為常見。ACCESS數(shù)據(jù)庫(kù)不僅安全性不夠高,而且其工作性能也會(huì)隨數(shù)據(jù)庫(kù)容量的增大而降低,當(dāng)訪問量大時(shí),極易出現(xiàn)IIS假死的情況。因此,ACCESS數(shù)據(jù)庫(kù)只適合在小型網(wǎng)站中部署使用。而隸屬于關(guān)系型數(shù)據(jù)庫(kù)的SQL Server數(shù)據(jù)庫(kù)安全性與可靠性均比較高。因此,目前大中型網(wǎng)站多基于此種數(shù)據(jù)庫(kù)進(jìn)行開發(fā)。為了使學(xué)生能夠熟練掌握ASP.NET與主流數(shù)據(jù)庫(kù)的連接方法,本文對(duì)ASP.NET與ACCESS數(shù)據(jù)庫(kù)、SQL Server數(shù)據(jù)庫(kù)、Mysql數(shù)據(jù)庫(kù)及Oracle數(shù)據(jù)庫(kù)的連接方法,分別進(jìn)行了分析研究并給出了詳細(xì)的配置過程。
ADO.NET[4-6]是在ADO的基礎(chǔ)上發(fā)展起來(lái)的一個(gè)面向?qū)ο蟮念悗?kù),既可以支持連接模式的數(shù)據(jù)訪問,又可以支持非連接模式的數(shù)據(jù)訪問,通常被封裝在動(dòng)態(tài)鏈接庫(kù)System.Data.dll之中,其設(shè)計(jì)初衷是為了能夠控制更為廣泛的數(shù)據(jù)源而設(shè)計(jì)。它不僅使分布式應(yīng)用程序的開發(fā)更為便捷,而且還可以滿足多種開發(fā)需求。在其出現(xiàn)之前,數(shù)據(jù)源之間如要進(jìn)行交互,必須有與之相應(yīng)的協(xié)議才可以。例如:早期的數(shù)據(jù)源需要ODBC協(xié)議進(jìn)行連接,SQL SERVER數(shù)據(jù)庫(kù)需要OleDb協(xié)議進(jìn)行連接。這里所描述的數(shù)據(jù)源既可以是常見的數(shù)據(jù)庫(kù),又可以是不同格式的文件,例如EXCEL文件、純文本文件等。總的來(lái)說(shuō)ADO.NET具有如下幾個(gè)特點(diǎn):首先,對(duì)XML具有很好的支持功能(數(shù)據(jù)訪問和XML可以實(shí)現(xiàn)緊密聯(lián)系)。第二,雖然ADO.NET與ADO使用的接口和基于的技術(shù)均不相同,但是二者可實(shí)現(xiàn)很好的共存。第三,由于ADO.NET與ADO具有相似性,因此ADO開發(fā)者無(wú)需花費(fèi)太多的精力,就可以在最短的時(shí)間內(nèi)掌握ADO.NET。第四,ADO.NET推出了一種連接池機(jī)制,這種機(jī)制使各應(yīng)用程序可重復(fù)使用數(shù)據(jù)庫(kù)的連接,這對(duì)于降低連接數(shù)據(jù)庫(kù)的開銷,提高應(yīng)用程序性能有著明顯的促進(jìn)作用。需要注意的是DataSet和Data Provider是ADO.NET的兩個(gè)重要組件。
DataSet由一個(gè)或多個(gè)數(shù)據(jù)表對(duì)象的集合所構(gòu)成,它不僅可在多種數(shù)據(jù)源中應(yīng)用,而且其數(shù)據(jù)可直接轉(zhuǎn)換為XML數(shù)據(jù)。它的主要作用就是屏蔽各數(shù)據(jù)源的差異,以及用來(lái)存放從數(shù)據(jù)源中檢索到的信息。其最大特點(diǎn)為:在進(jìn)行數(shù)據(jù)訪問時(shí),可不受數(shù)據(jù)庫(kù)鏈路的影響,即使在數(shù)據(jù)庫(kù)關(guān)閉的情況下仍能實(shí)現(xiàn)對(duì)其正常訪問。我們可以將其理解為位于內(nèi)存中的數(shù)據(jù)庫(kù)。
Data Provide不僅為數(shù)據(jù)源和DataSet之間提供關(guān)聯(lián),而且還為用戶提供了訪問一系列數(shù)據(jù)庫(kù)的接口。其主要任務(wù)是對(duì)數(shù)據(jù)源中的數(shù)據(jù)進(jìn)行讀寫訪問并實(shí)現(xiàn)對(duì)其操作,它包含了以下五種數(shù)據(jù)提供程序:訪問SQL Server的數(shù)據(jù)提供程序、訪問OLE DB數(shù)據(jù)源的數(shù)據(jù)提供程序 、訪問OLE DB數(shù)據(jù)源的數(shù)據(jù)提供程序、訪問Oracle數(shù)據(jù)源的數(shù)據(jù)提供程序、訪問EDM應(yīng)用程序的數(shù)據(jù)提供程序。另外,需要強(qiáng)調(diào)的是:每種數(shù)據(jù)提供程序均包括四種對(duì)象,它們分別是:位于ADO.NET最底層的Connection對(duì)象,主要用來(lái)與數(shù)據(jù)源的連接;位于Connection對(duì)象上的Command對(duì)象,主要用來(lái)對(duì)數(shù)據(jù)源執(zhí)行添加、刪除、查詢、修改等一系列命令);DataReader對(duì)象(主要用來(lái)從數(shù)據(jù)源中獲取向前的只讀數(shù)據(jù)流,對(duì)于提高應(yīng)用程序的工作效率、降低網(wǎng)絡(luò)負(fù)載有著明顯的作用。但是應(yīng)用DataReader對(duì)象,需要我們以連接的方式對(duì)數(shù)據(jù)源進(jìn)行訪問);以及DataAdapter對(duì)象(它既可以對(duì)數(shù)據(jù)源中的數(shù)據(jù)進(jìn)行更新,又可以填充DataSet, 我們可以將其看作連接DataSet組件與數(shù)據(jù)源的紐帶)。
在實(shí)際應(yīng)用數(shù)據(jù)提供程序?qū)ο蟮倪^程中,要做的第一步就是需要命名空間(命名空間既包括了對(duì)象名稱又包括了對(duì)象所在的具體路徑),只有這樣這些對(duì)象才會(huì)被編譯器成功的加載。例如:應(yīng)用SQL Server.NET數(shù)據(jù)提供程序連接SQL數(shù)據(jù)庫(kù)時(shí),必須先引入名為System.Data.SQLClient的命名空間,否則就無(wú)法與SQL數(shù)據(jù)庫(kù)正常連接。
應(yīng)用ASP.NET制作網(wǎng)站的過程中,首先需要在應(yīng)用程序與數(shù)據(jù)庫(kù)二者之間建立連接,才能完成對(duì)數(shù)據(jù)的查詢、增加、修改、刪除等后續(xù)一些列操作。通常應(yīng)用程序通過以下幾個(gè)步驟實(shí)現(xiàn)與數(shù)據(jù)庫(kù)建立連接:首先,引入相應(yīng)數(shù)據(jù)庫(kù)的ADO.NET命名空間。第二,設(shè)置與數(shù)據(jù)庫(kù)相應(yīng)的連接字符串。我們可以把設(shè)置連接字符串,理解為進(jìn)行路徑方向的選擇。如果設(shè)置錯(cuò)誤則無(wú)法與數(shù)據(jù)庫(kù)進(jìn)行連接。(每種數(shù)據(jù)庫(kù)均有自己相應(yīng)的連接字符串,一般來(lái)說(shuō)連接字符串對(duì)字母的大小寫不進(jìn)行區(qū)分,它主要由所要連接數(shù)據(jù)庫(kù)的具體路徑、數(shù)據(jù)庫(kù)名、數(shù)據(jù)庫(kù)的驗(yàn)證等相關(guān)信息組成。)第三,為了與數(shù)據(jù)庫(kù)建立連接,我們基于所設(shè)置的連接字符串,創(chuàng)建connection對(duì)象。第四,執(zhí)行打開數(shù)據(jù)庫(kù)的操作。為了便于讀者能夠輕松掌握ASP.NET與當(dāng)前各主流數(shù)據(jù)庫(kù)的連接方法,下面我們舉例加以說(shuō)明。
ASP.NET連接Access數(shù)據(jù)庫(kù),首要任務(wù)為引入相應(yīng)的命名空間;其次,需要設(shè)置連接字符串,包括驅(qū)動(dòng)引擎、數(shù)據(jù)庫(kù)名、數(shù)據(jù)庫(kù)路徑等相關(guān)信息,以上信息需要用分號(hào)進(jìn)行隔離;第三,創(chuàng)建數(shù)據(jù)庫(kù)連接對(duì)象;第四,打開數(shù)據(jù)庫(kù)。需要說(shuō)明的是:Access數(shù)據(jù)庫(kù)版本不同,連接字符串中所設(shè)置的驅(qū)動(dòng)引擎也不相同。例如access 2003以上版本的數(shù)據(jù)庫(kù)需要用Microsoft.Jet.OLEDB.12.0來(lái)驅(qū)動(dòng),如果用Microsoft.Jet.OLEDB.4.0來(lái)驅(qū)動(dòng),程序則會(huì)報(bào)錯(cuò)。 在這里假設(shè)我們將要連接的Access2007數(shù)據(jù)庫(kù)名為sgy.mdb,該數(shù)據(jù)庫(kù)沒有設(shè)置密碼,位于E盤下名為BOOK的文件夾中。下面給出在ASP.NET相關(guān)頁(yè)面中與該數(shù)據(jù)庫(kù)進(jìn)行連接的具體語(yǔ)句:
(一)引入命名空間
Using System.Data;
Using System.Data.OleDb;
(二)設(shè)置連接字符串
string sgyconnection="provider= Microsoft.Jet.OLEDB.12.0;"
sgyConnection+=@"Data Source=E:/BOOK/sgy.mdb"; //給出數(shù)據(jù)庫(kù)的具體位置
(三)創(chuàng)建數(shù)據(jù)庫(kù)連接對(duì)象
OleDbConnection objConnection=new OleDbConnection(sgyConnection);//后期對(duì)數(shù)據(jù)庫(kù)的所有操作均要依賴此連接對(duì)象
(四)打開數(shù)據(jù)庫(kù)
objConnection.Open();
ASP.NET連接SQL SERVER數(shù)據(jù)庫(kù)所采用的語(yǔ)句與連接Access數(shù)據(jù)庫(kù)類似,只是在以下幾個(gè)方面稍作改變:首先,引入的命名空間要與SQL SERVER數(shù)據(jù)庫(kù)相匹配,這就需要我們把引入的命名空間改為System.Data.sqlclient;其次,由于數(shù)據(jù)庫(kù)類型和訪問內(nèi)容發(fā)生了改變,因此連接字符串也需要做出相應(yīng)的調(diào)整。調(diào)整后的連接字符串新增加了數(shù)據(jù)庫(kù)連接池、Intergrated Security、超時(shí)連接時(shí)間等相關(guān)信息。最后,基于新設(shè)置的連接字符串,重新創(chuàng)建數(shù)據(jù)庫(kù)連接對(duì)象。在這里假設(shè)我們將要連接的SQL SERVER數(shù)據(jù)庫(kù)服務(wù)器為本機(jī),所連接的數(shù)據(jù)庫(kù)為L(zhǎng)ZZ,數(shù)據(jù)庫(kù)用戶名為sgy,連接密碼為:00682416。下面給出在ASP.NET相關(guān)頁(yè)面中與該數(shù)據(jù)庫(kù)進(jìn)行連接的具體語(yǔ)句:
(一)引入命名空間
Using System.Data;
Using System.Data.sqlclient;
(二)設(shè)置連接字符串
string sgyconnection="Date Source=.;uid=sgy;pwd=00682416;";
sgyconnection+="Initial Catalog=LZZ; Connection Timeout=25;";
//需要注意的是:如數(shù)據(jù)庫(kù)服務(wù)器為本機(jī),計(jì)算機(jī)名可用.來(lái)替換;
(三)創(chuàng)建數(shù)據(jù)庫(kù)連接對(duì)象
SqlConnection objConnection=new SqlConnection(sgyConnection);
(四)打開數(shù)據(jù)庫(kù)
objConnection.Open();
大型數(shù)據(jù)庫(kù)之一的Oracle數(shù)據(jù)庫(kù),是當(dāng)今世界范圍內(nèi)應(yīng)用最為廣泛的對(duì)象關(guān)系數(shù)據(jù)庫(kù)管理系統(tǒng)。Oracle數(shù)據(jù)庫(kù)之所以受到用戶的青睞,主要是因?yàn)樗谝韵聨讉€(gè)方面性能優(yōu)越:第一,在保證數(shù)據(jù)完整性與數(shù)據(jù)安全性方面;第二,在支持多用戶、高吞吐量數(shù)據(jù)處理方面;第三,在分布式數(shù)據(jù)處理方面,Oracle數(shù)據(jù)庫(kù)可利用通信網(wǎng)絡(luò)將位于不同地點(diǎn)的數(shù)據(jù)庫(kù)連接起來(lái),形成一個(gè)在邏輯上統(tǒng)一的數(shù)據(jù)庫(kù);第四,在可移植性方面,Oracle數(shù)據(jù)庫(kù)支持在WINDOWS、LINUX等多種系統(tǒng)環(huán)境中進(jìn)行部署。ASP.NET連接Oracle數(shù)據(jù)庫(kù)所引入的命名空間應(yīng)為System.Data.Oracleclient;所使用的連接字符串包括數(shù)據(jù)源名稱、登錄數(shù)據(jù)庫(kù)所需要的用戶名及密碼等相關(guān)信息。在這里假設(shè)我們將要連接的數(shù)據(jù)源為yangyang,用戶名為chang,密碼為0068。下面給出在ASP.NET相關(guān)頁(yè)面中與該數(shù)據(jù)庫(kù)進(jìn)行連接的具體語(yǔ)句:
(一)引入命名空間
Using System.Data;
Using System.Data. Oracleclient;
(二)設(shè)置連接字符串
string connstring="Date Source=yangyang;uid=chang;pwd=00682416;";
(三)創(chuàng)建數(shù)據(jù)庫(kù)連接對(duì)象
OracleConnection conn=new OracleConnection(connstring);
(四)打開數(shù)據(jù)庫(kù)
conn.Open();
Mysql數(shù)據(jù)庫(kù)是一種建立在關(guān)系模型上的小型關(guān)系數(shù)據(jù)庫(kù)管理系統(tǒng),它使用SQL語(yǔ)句作為自己的檢索和操作語(yǔ)言,并支持在WINDOWS、LINUX等多種系統(tǒng)環(huán)境中進(jìn)行部署??偟膩?lái)說(shuō)它具有二個(gè)顯著的特點(diǎn):其一,Mysql數(shù)據(jù)庫(kù)中的數(shù)據(jù)通常被分別存放在不同的表中,這使它不僅具有較快的數(shù)據(jù)存取速度,而且靈活性也有了很大的提高。其二,可以有效的降低網(wǎng)站建設(shè)成本。MySQL數(shù)據(jù)庫(kù)中的源代碼是開源的,用戶可以在網(wǎng)絡(luò)上免費(fèi)下載使用。正是基于這一特性,使它成為中小型網(wǎng)站建設(shè)過程中廣泛采用的數(shù)據(jù)庫(kù)。假設(shè)我們使用ASP.NET技術(shù)在一臺(tái)WINDOWS SERVER服務(wù)器上建立網(wǎng)站,Mysql數(shù)據(jù)庫(kù)就位于這臺(tái)服務(wù)器上,所連接的數(shù)據(jù)庫(kù)為L(zhǎng)ZZ,數(shù)據(jù)庫(kù)用戶名為chang,連接密碼為:00452416。下面給出在ASP.NET相關(guān)頁(yè)面中與該數(shù)據(jù)庫(kù)進(jìn)行連接的具體語(yǔ)句:
(一)引入命名空間
Using System.Data;
Using System.Data.mysqlclient;
(二)設(shè)置連接字符串
string sgyconn="server=localhost;Database=LZZ;uid=chang;pwd=00452416 ";
(三)創(chuàng)建數(shù)據(jù)庫(kù)連接對(duì)象
conn=new MySqlConnection(sgyconn);
(四)打開數(shù)據(jù)庫(kù)
conn.Open();
伴隨著ASP.NET技術(shù)的誕生,WEB應(yīng)用程序的開發(fā)也跨入了一個(gè)全新時(shí)代。在WEB應(yīng)用程序開發(fā)過程中,通過運(yùn)用ASP.NET技術(shù)不僅可以實(shí)現(xiàn)代碼與界面程序的隔離,而且還可以為用戶提供與數(shù)據(jù)庫(kù)連接的新手段。本文詳細(xì)分析了ASP.NET與當(dāng)前各主流數(shù)據(jù)庫(kù)進(jìn)行連接的步驟,并給出了詳細(xì)的配置過程,最終實(shí)現(xiàn)了與數(shù)據(jù)庫(kù)的連通。對(duì)于學(xué)生更好的理解 ASP.NET的工作原理,并熟練掌握與各類數(shù)據(jù)庫(kù)的連接方法具有一定的現(xiàn)實(shí)指導(dǎo)意義。