為你的ASP程序制作一個編譯組件(中)
發(fā)表時間:2024-06-19 來源:明輝站整理相關(guān)軟件相關(guān)文章人氣:
[摘要]下一步是將VBScript對象中的所有代碼拷貝出來并粘貼到新工程向?qū)@示的類窗口中去.只要拷貝從"class DBConnection"到"end class"之間的代碼.在粘貼完代碼以后,在屬性窗口中將類的名字改成DBConnection,如圖C所示.同...
下一步是將VBScript對象中的所有代碼拷貝出來并粘貼到新工程向?qū)@示的類窗口中去.只要拷貝從"class DBConnection"到"end class"之間的代碼.在粘貼完代碼以后,在屬性窗口中將類的名字改成DBConnection,如圖C所示.

同時將MTSTransactionMode改成3(使用事務(wù)處理過程).我們沒有必要為這個對象添加任何為支持事務(wù)處理(transaction)過程特別編寫的代碼,但我們最好應(yīng)該申明你的對象將支持事務(wù)處理.現(xiàn)在,在你的硬盤上保存你的工程和類.我覺得使用這些名字將減少混淆,但是如果你的口味和我不同,你也可以更改這些文件的名字.
因為這個對象使用ADODB,所以下一步是在工程中添加對那個庫的引用.選擇"工程"菜單并選擇"引用...".隨后顯示的對話框?qū)@示一個你的計算機(jī)上可用的庫文件的列表,如圖D所示.瀏覽這個列表然后選擇Microsoft ActiveX Data Objects 2.5 Library 復(fù)選框.我的系統(tǒng)上裝了SQL 2000,但是如果你沒有2.5版本,你可以選擇你的系統(tǒng)上最近的版本.這個組件沒有使用任何剛發(fā)布的功能,所以大多數(shù)Active Data Objects的版本能夠正常工作.
圖D

代碼修改
到目前為止,我們已經(jīng)成功的將DBConnection 類的代碼轉(zhuǎn)移到了Visual Basic里面.對大部分地方來說,這個代碼是完整的.除了類的構(gòu)造函數(shù)中對ASP Application對象的引用和Server.CreateObject那一行以外,這個代碼就可以編譯了.為了保證一個編譯良好的對象,一點點代碼上的修改是必要的.
首先,在代碼窗口的頂部添加"Option Explicit"這一行以便當(dāng)變量在它們被申明以前就使用的時候系統(tǒng)產(chǎn)生一個錯誤警告.同樣,將對mConnectionString的維數(shù)申明移到Option Explicit申明下面.然后,如圖B所示那樣將Class_Initialize()過程改變一下.這個代碼只是簡單的將連接字符串代碼直接移動到了對象內(nèi)部.這增加了一點點安全性,因為一個編譯后的對象能夠連到數(shù)據(jù)庫而不會向開發(fā)者或未授權(quán)的用戶暴露實際的連接字符串.
Listing B
Private Sub Class_Initialize()
mConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;" _
& "Data Source=c:\temp\Music Collection.mdb;"
End Sub
為了確保你的組件不會暴露連接字符串,可以將Public Property GetConnectionString()代碼從類中去掉.這能讓ConnectionString屬性變得只讀,這就使得用戶能夠使用這個類來訪問其他的數(shù)據(jù)源,但是它又阻止了這個屬性被讀取出來,于是用戶就無法看見連接字符串了.
你還可以去掉Class_Terminate()過程,因為它并不包含任何代碼.可以用一個查找替換過程,"Server.CreateObject"作為查找文本而"CreateObject"作為替換文本來替換掉它們.這使得所有對象的創(chuàng)建過程對Visual Basic兼容.到這個時候你應(yīng)該保存工程然后,僅僅是出于測試的目的,從文件菜單中選擇創(chuàng)建DBUtil.dll編譯這個dll.這個組件應(yīng)該能夠編譯成功,雖然不做進(jìn)一步的修改它就不能正常運行.
余下的修改工作數(shù)不勝數(shù)但是簡單.因為Visual Basic的類型檢查比VBScript更強,你應(yīng)該對類中的所有函數(shù)和變量做出類型限定.這個工作不會要多長時間卻能幫助生成一個更高效的代碼.列表C展示了完成的類.