在vb.net中,调用conn.close或conn.dispose甚至使用

7fyelxc5  于 2021-06-17  发布在  Mysql
关注(0)|答案(2)|浏览(357)

使用workbench。如果我打开一个到mysql的连接(在vb中),它将显示一个连接已经打开。如果我关闭连接,(在workbench上),则表明连接仍然打开。如果我尝试重新打开同一个连接,它将打开,它将关闭没有任何问题。但是workbench显示第一个连接仍然是打开的。它一直打开,直到我退出应用程序。

Try
        Using myConnection As New MySqlConnection(_ServerString_vip)
            myConnection.Open()

            myConnection.Close()

            End Using
        End Using
    Catch ex As Exception
        MsgBox("Error getting Username Information.")
    End Try
vvppvyoh

vvppvyoh1#

@他说得绝对正确。我在网上到处找,找不到答案。希望这个问题能帮助很多人。最终连接会自动断开。

vvppvyoh

vvppvyoh2#

您应该在ado.net中阅读一下连接池。
DbConnection 对象实际上相当轻,并且存在于比实际数据库连接更高的级别。当你打开一个 DbConnection 对象时,将打开一个低级数据库连接。当你关上门的时候 DbConnection 对象时,低级数据库连接将保持打开状态一段时间。这是因为打开和关闭它是一个昂贵的操作。如果你打开另一个 DbConnection 对于相同的连接字符串,将重用相同的低级数据库连接。只有在低级别连接保持一段时间未使用时,它才会关闭。
这不是你必须担心的事情。这就是ado.net中一直存在的方式,系统会自动处理它。你一直在做你正在做的事情,即创造 DbConnection 对象 Using 语句,剩下的由系统处理。
顺便说一下,调用时显式打开连接没有意义 Fill 或者 Update 在数据适配器上。这两种方法都会自动打开连接,然后再次关闭。如果希望连接在运行后保持打开状态,则只应显式打开连接 Fill 或者 Update 打电话,例如,如果你有更多的工作要做的连接。

相关问题