這是一個問題,這可能會導致一些經驗豐富的開發人員的炮火倒敘在FOXBASE洞挖古代設備...德爾福5需要延長ADODB_TLB接口
我們的網頁代碼的時效位,我們需要做一些低級別的數據庫處理。我們已經編寫了一個COM庫來完成其他處理,比如加密和用戶身份驗證,並且我們已經確定了最好的方法是創建一個擴展現有ADODB_TLB接口的COM接口,並添加一些處理。
如何當一切都說過和做過它將被使用時,要更換看起來像這樣的一些現有呼叫:
Set CMD = Server.CreateObject("ADODB.Command")
CMD.ActiveConnection = DB
CMD.CommandType = adCmdStoredProc
CMD.CommandText = "Country_Code_Get"
CMD.Parameters.Append CMD.CreateParameter(, adInteger, adParamInput, 4, NULL)
Set RS = CMD.Execute()
新的代碼,看起來更像是這樣的:
Set CMD = Server.CreateObject("MyADODB.Command")
CMD.ActiveConnection = DB
CMD.CommandType = adCmdStoredProc
CMD.CommandText = "Country_Code_Get"
CMD.SpecialHandling = "Extra Stuff"
CMD.Parameters.Append CMD.CreateParameter(, adInteger, adParamInput, 4, NULL)
Set RS = CMD.Execute()
我們的目標是擴展現有的ADODB庫,以便通過對我們的大型代碼庫進行最少量的更改來實現額外的處理。
有沒有一種方法來擴展現有的_Command接口,只添加我們的新參數(當然,也可以重寫必要的Execute函數來適當處理新參數),而無需有效地複製整個_Command接口?
這是相當簡單的修改AdoDB.Pas的執行部分,只要你不改變接口部分。我這樣做是爲了解決一些奇怪的問題。我不知道一個簡單的方法來修改_Command接口,如果你指的是COM接口,但你肯定可以改變它是如何從AdoDB.Pas – MartynA
稱爲請問這包括添加新的屬性的類呢? – Dan
不以AdoDB.Pas的接口中聲明,如果你想設計時支持,因爲類的屬性出現在界面(在最近版本的Delphi您可以添加使用‘類幫手’屬性getter和setter方法的類,但D5爲時20年太早了)。然而,沒有什麼可以阻止你創造它聲明的類的後裔ADODB並添加你想要的任何性質的單位 - 你需要了解哪些使用它們的方法是否重寫在ADODB,當然。 – MartynA