為你的ASP程式製作一個編譯組件(中)
最後更新:2017-02-28
來源:互聯網
上載者:User
下一步是將VBScript對象中的所有代碼拷貝出來並粘貼到新工程嚮導所顯示的類視窗中去.只要拷貝從"class DBConnection"到"end class"之間的代碼.在粘貼完代碼以後,在屬性視窗中將類的名字改成DBConnection,如圖C所示.
同時將MTSTransactionMode改成3(使用交易處理過程).我們沒有必要為這個對象添加任何為支援交易處理(transaction)過程特別編寫的代碼,但我們最好應該申明你的對象將支援交易處理.現在,在你的硬碟上儲存你的工程和類.我覺得使用這些名字將減少混淆,但是如果你的口味和我不同,你也可以更改這些檔案的名字.
因為這個對象使用ADODB,所以下一步是在工程中添加對那個庫的引用.選擇"工程"菜單並選擇"引用...".隨後顯示的對話方塊將顯示一個你的電腦上可用的庫檔案的列表,如圖D所示.瀏覽這個列表然後選擇Microsoft ActiveX Data Objects 2.5 Library 複選框.我的系統上裝了SQL 2000,但是如果你沒有2.5版本,你可以選擇你的系統上最近的版本.這個組件沒有使用任何剛發布的功能,所以大多數Active Data Objects的版本能夠正常工作.
圖D
代碼修改
到目前為止,我們已經成功的將DBConnection 類的代碼轉移到了Visual Basic裡面.對大部分地方來說,這個代碼是完整的.除了類的建構函式中對ASP Application對象的引用和Server.CreateObject那一行以外,這個代碼就可以編譯了.為了保證一個編譯良好的對象,一點點代碼上的修改是必要的.
首先,在代碼視窗的頂部添加"Option Explicit"這一行以便當變數在它們被申明以前就使用的時候系統產生一個錯誤警告.同樣,將對mConnectionString的維數申明移到Option Explicit申明下面.然後,如圖B所示那樣將Class_Initialize()過程改變一下.這個代碼只是簡單的將連接字串代碼直接移動到了對象內部.這增加了一點點安全性,因為一個編譯後的對象能夠連到資料庫而不會向開發人員或未授權的使用者暴露實際的連接字串.
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屬性變得唯讀,這就使得使用者能夠使用這個類來訪問其他的資料來源,但是它又阻止了這個屬性被讀取出來,於是使用者就無法看見連接字串了.
你還可以去掉Class_Terminate()過程,因為它並不包含任何代碼.可以用一個尋找替換過程,"Server.CreateObject"作為尋找文本而"CreateObject"作為替換文本來替換掉它們.這使得所有對象的建立過程對Visual Basic相容.到這個時候你應該儲存工程然後,僅僅是出於測試的目的,從檔案菜單中選擇建立DBUtil.dll編譯這個dll.這個組件應該能夠編譯成功,雖然不做進一步的修改它就不能正常運行.
餘下的修改工作數不勝數但是簡單.因為Visual Basic的類型檢查比VBScript更強,你應該對類中的所有函數和變數做出類型限定.這個工作不會要多長時間卻能協助產生一個更高效的代碼.列表C展示了完成的類.