最壞的情況是安裝火鳥,所以一個連接連接到安裝的服務器實例,而另一個嵌入的一個。因爲這足以擁有一個物理驅動對象,但沒有更多的問題。
所以,滴形式或數據模塊和設置其DriverID屬性爲唯一的名稱上一個TFDPhysFBDriverLink(即不被用作基極驅動器的ID爲任何驅動程序),並將其標記爲Embedded(具有在情況下,沒有實際意義當你在此時指定VendorLib,但你可以用它來識別駕駛者,FireDAC使用此屬性僅適用於默認的庫應加載)的決定。
那麼對於一個連接使用您定義DriverID和另一個使用回退通過使用其BaseDriverID(我省略了不必要的設置此任務)爲默認火鳥驅動程序設置:
FDPhysFBDriverLink1.DriverID := 'FBEmbedded'; { ← ID not used by any BaseDriverID }
FDPhysFBDriverLink1.Embedded := True; { ← not mandatory when VendorLib is specified }
FDPhysFBDriverLink1.VendorLib := 'C:\fbembed.dll'; { ← client library file name }
FDConnection1.Params.DriverID := 'FB'; { ← driver's BaseDriverID }
FDConnection1.Open; { ← this will connect to the installed server }
FDConnection2.Params.DriverID := 'FBEmbedded'; { ← driver's DriverID }
FDConnection2.Open; { ← this will connect to the embedded server }
但我寧願有兩個單獨的驅動程序對象,一個用於已安裝的服務器(具有默認設置,如基本驅動程序),另一個用於嵌入式服務器。例如:
FDPhysFBDriverLink1.DriverID := 'FBEmbedded'; { ← ID not used by any BaseDriverID }
FDPhysFBDriverLink1.Embedded := True; { ← not mandatory when VendorLib is specified }
FDPhysFBDriverLink1.VendorLib := 'C:\fbembed.dll'; { ← client library file name }
FDPhysFBDriverLink2.DriverID := 'FBInstalled'; { ← ID not used by any BaseDriverID }
FDConnection1.Params.DriverID := 'FBEmbedded'; { ← driver 1 DriverID }
FDConnection1.Open; { ← this will connect to the embedded server }
FDConnection2.Params.DriverID := 'FBInstalled'; { ← driver 2 DriverID }
FDConnection2.Open; { ← this will connect to the installed server }
什麼是嵌入式財產嗎?我找不到任何文檔(* Embarcadero Technologies目前沒有任何附加信息*) –
如果沒有設置VendorLib,它只加載'fbembed.dll'庫而不是'fbclient.dll'。在這種情況下,它是無用的(因爲您將指定'VendorLib'),但我已經將它用於未來可能的添加(您可以使用它來識別您的驅動程序)。 – Victoria
好的,這個工作,謝謝。我使用了兩種不同的TFDPhysFBDriverLinks。我注意到的一件事:我不應該*分配DriverName和DriverID。 –