明輝手游網(wǎng)中心:是一個(gè)免費(fèi)提供流行視頻軟件教程、在線學(xué)習(xí)分享的學(xué)習(xí)平臺(tái)!

為你的ASP程序制作一個(gè)編譯組件(中)

[摘要]下一步是將VBScript對(duì)象中的所有代碼拷貝出來(lái)并粘貼到新工程向?qū)@示的類窗口中去.只要拷貝從"class DBConnection"到"end class"之間的代碼.在粘貼完代碼以后,在屬性窗口中將類的名字改成DBConnection,如圖C所示.同...
下一步是將VBScript對(duì)象中的所有代碼拷貝出來(lái)并粘貼到新工程向?qū)@示的類窗口中去.只要拷貝從"class DBConnection"到"end class"之間的代碼.在粘貼完代碼以后,在屬性窗口中將類的名字改成DBConnection,如圖C所示.


同時(shí)將MTSTransactionMode改成3(使用事務(wù)處理過(guò)程).我們沒(méi)有必要為這個(gè)對(duì)象添加任何為支持事務(wù)處理(transaction)過(guò)程特別編寫(xiě)的代碼,但我們最好應(yīng)該申明你的對(duì)象將支持事務(wù)處理.現(xiàn)在,在你的硬盤上保存你的工程和類.我覺(jué)得使用這些名字將減少混淆,但是如果你的口味和我不同,你也可以更改這些文件的名字. 

因?yàn)檫@個(gè)對(duì)象使用ADODB,所以下一步是在工程中添加對(duì)那個(gè)庫(kù)的引用.選擇"工程"菜單并選擇"引用...".隨后顯示的對(duì)話框?qū)@示一個(gè)你的計(jì)算機(jī)上可用的庫(kù)文件的列表,如圖D所示.瀏覽這個(gè)列表然后選擇Microsoft ActiveX Data Objects 2.5 Library 復(fù)選框.我的系統(tǒng)上裝了SQL 2000,但是如果你沒(méi)有2.5版本,你可以選擇你的系統(tǒng)上最近的版本.這個(gè)組件沒(méi)有使用任何剛發(fā)布的功能,所以大多數(shù)Active Data Objects的版本能夠正常工作. 

圖D

代碼修改
到目前為止,我們已經(jīng)成功的將DBConnection 類的代碼轉(zhuǎn)移到了Visual Basic里面.對(duì)大部分地方來(lái)說(shuō),這個(gè)代碼是完整的.除了類的構(gòu)造函數(shù)中對(duì)ASP Application對(duì)象的引用和Server.CreateObject那一行以外,這個(gè)代碼就可以編譯了.為了保證一個(gè)編譯良好的對(duì)象,一點(diǎn)點(diǎn)代碼上的修改是必要的. 

首先,在代碼窗口的頂部添加"Option Explicit"這一行以便當(dāng)變量在它們被申明以前就使用的時(shí)候系統(tǒng)產(chǎn)生一個(gè)錯(cuò)誤警告.同樣,將對(duì)mConnectionString的維數(shù)申明移到Option Explicit申明下面.然后,如圖B所示那樣將Class_Initialize()過(guò)程改變一下.這個(gè)代碼只是簡(jiǎn)單的將連接字符串代碼直接移動(dòng)到了對(duì)象內(nèi)部.這增加了一點(diǎn)點(diǎn)安全性,因?yàn)橐粋(gè)編譯后的對(duì)象能夠連到數(shù)據(jù)庫(kù)而不會(huì)向開(kāi)發(fā)者或未授權(quán)的用戶暴露實(shí)際的連接字符串. 

Listing B
Private Sub Class_Initialize()
   mConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;" _
      & "Data Source=c:\temp\Music Collection.mdb;"
End Sub

為了確保你的組件不會(huì)暴露連接字符串,可以將Public Property GetConnectionString()代碼從類中去掉.這能讓ConnectionString屬性變得只讀,這就使得用戶能夠使用這個(gè)類來(lái)訪問(wèn)其他的數(shù)據(jù)源,但是它又阻止了這個(gè)屬性被讀取出來(lái),于是用戶就無(wú)法看見(jiàn)連接字符串了. 

你還可以去掉Class_Terminate()過(guò)程,因?yàn)樗⒉话魏未a.可以用一個(gè)查找替換過(guò)程,"Server.CreateObject"作為查找文本而"CreateObject"作為替換文本來(lái)替換掉它們.這使得所有對(duì)象的創(chuàng)建過(guò)程對(duì)Visual Basic兼容.到這個(gè)時(shí)候你應(yīng)該保存工程然后,僅僅是出于測(cè)試的目的,從文件菜單中選擇創(chuàng)建DBUtil.dll編譯這個(gè)dll.這個(gè)組件應(yīng)該能夠編譯成功,雖然不做進(jìn)一步的修改它就不能正常運(yùn)行. 

余下的修改工作數(shù)不勝數(shù)但是簡(jiǎn)單.因?yàn)閂isual Basic的類型檢查比VBScript更強(qiáng),你應(yīng)該對(duì)類中的所有函數(shù)和變量做出類型限定.這個(gè)工作不會(huì)要多長(zhǎng)時(shí)間卻能幫助生成一個(gè)更高效的代碼.列表C展示了完成的類.