如何在Excel中使AD​​ODB.Connection在VBA中持久?

我有一个Excel电子表格,需要显示我们的SQL数据库中的数据。

我将缓慢查询的结果存储在临时表中,并希望能够重复访问这些结果,而不必重新运行缓慢的查询。

我在VBA中使用ADODB.Connection连接到我们的SQL数据库并检索信息。 我只想打开一个连接,只要用户使用电子表格,就可以通过各种macros使用该会话。 我无法find使连接持久化的任何方法,所以一旦我退出打开它的macros并且丢失了我创build的任何临时表,它总是closures。

当macros完成并因此closures时,连接将超出范围。 您不希望持续打开与SQL Server无限连接的连接,因为这会严重影响其他用户/服务的数据库性能。

您在临时表中存储的数据有多大? 如果它不是太大,你可以在当地举行。 为了防止这些数据在macros完成时超出范围,您需要将其存储在模块级variables中,而不是在macros中。 是的,你也可以在这里存储你的连接,但我强烈build议你不要。

Daz刘易斯是完全正确的,你不应该保持数据库连接无限期开放。 但是, 如果这是一个本地数据库,并且是唯一使用它的数据库,那么只要您愿意 ,您应该能够保持打开状态。

将其添加为保存代码的模块的顶部行:

Global dbConnPublic As ADODB.Connection 

在“ThisWorkbook”对象中:

 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 

这将在打开工作簿时打开数据库连接,并在closures工作簿时closures它。 请记住,您可能需要检查以确保连接在需要使用时仍处于打开状态,因为如果服务器打开时间过长,可能会被服务器closures。

Interesting Posts