為你的ASP程序制作一個編譯組件(中)
發表時間:2024-02-26 來源:明輝站整理相關軟件相關文章人氣:
[摘要]下一步是將VBScript對象中的所有代碼拷貝出來并粘貼到新工程向導所顯示的類窗口中去.只要拷貝從"class DBConnection"到"end class"之間的代碼.在粘貼完代碼以后,在屬性窗口中將類的名字改成DBConnection,如圖C所示.同...
下一步是將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展示了完成的類.