簡體   English   中英

如何在 Excel 中的 VBA 中使 ADODB.Connection 持久化?

[英]How do I make an ADODB.Connection Persistent in VBA in Excel?

我有一個 Excel 電子表格,它需要顯示來自我們的 SQL 數據庫的數據。

我將慢速查詢的結果存儲在一個臨時表中,並希望能夠重復訪問這些結果而不必重新運行慢速查詢。

我在 VBA 中使用 ADODB.Connection 連接到我們的 SQL 數據庫並檢索信息。 只要用戶使用電子表格,我想打開一次連接並在各種宏中使用該 session。 我找不到任何使連接持久的方法,所以一旦我退出打開它的宏並且我丟失了我創建的任何臨時表,它總是會關閉。

當宏完成並因此關閉時,您的連接將斷開 scope。 您不希望對 SQL 服務器無限期地保持連接打開,因為這會嚴重影響其他用戶/服務的數據庫性能。

您在臨時表中存儲的數據有多大? 如果它不是太大,你可以在本地保存它。 為防止此數據在宏完成時也從 scope 中流出,您需要將其存儲在模塊級變量中而不是宏中。 是的,您也可以在這里存儲您的連接,但我強烈建議您不要這樣做。

Daz Lewis 完全正確,您不應該無限期地保持數據庫連接打開。 但是,如果這是一個本地數據庫並且您是唯一一個使用它的人,那么您應該能夠將其保持打開狀態,只要您願意。

將此添加為包含您的代碼的模塊的頂行:

Global dbConnPublic As ADODB.Connection

在“ThisWorkbook”object 中:

Private Sub Workbook_Open()
    Set dbConnPublic = openDBConn() 'Or whatever your DB connection function is called'
End Sub
Private Sub Workbook_BeforeClose(Cancel As Boolean)
    dbConnPublic.Close
End Sub

這將在打開工作簿時打開數據庫連接,並在關閉工作簿時關閉它。 請記住,您可能需要檢查以確保在需要使用連接時仍然打開連接,因為如果打開時間過長,它可能會被服務器關閉。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM