【发布时间】:2016-08-16 02:34:48
【问题描述】:
我有一个客户端/服务器桌面应用程序,在我的一些客户端电脑上遇到了一些数据库连接问题。当我编写应用程序时,我没有更好的了解,所以我在应用程序启动时创建并打开了 1 个数据库连接,并在整个应用程序中使用相同的连接。我知道这是一个坏主意,因为网络连接不稳定,而且似乎防病毒程序有时会导致这些连接断开,从而导致一些错误。我在代码中有数百个地方需要在使用它们时返回并创建/打开/关闭连接。
问题是,有什么方法可以创建一个公共函数,我可以在其中执行此操作,然后进行全局查找和替换以将连接名称替换为新的函数名称?
类似:
Dim qry As NpgsqlCommand
sqlUpdateItem = "update table set field = value where id = 1"
qry = New NpgsqlCommand(sqlUpdateItem, con)
qry.ExecuteNonQuery()
到
Dim qry As NpgsqlCommand
sqlUpdateItem = "update table set field = value where id = 1"
qry = New NpgsqlCommand(sqlUpdateItem, newCon())
qry.ExecuteNonQuery()
public function newCon()
Dim con As New NpgsqlConnection(connectionString)
con.Open()
Return tcon
End Function
我试过了,但没有运气。我只是在寻找不涉及我在整个应用程序的数百个地方更新几行代码的任何可能的解决方案。好消息是我只需要对所有命令执行此操作,因为我可以将全新的连接传递给数据适配器,它将处理打开/关闭。
【问题讨论】:
-
您可能希望为其他问题和改进留出空间。例如,许多 db Provider 对象应该被创建、使用和处理。
Option Strict是另一个, -
您现有的连接从未被丢弃。如果您现在为其中的每一个创建一个新连接,它们也将永远不会被丢弃,最终您将用完连接。正如@Plutonix 所说,现在花时间进行一些重构。查看
using语句,了解如何处理这些对象的清晰方法。
标签: database vb.net postgresql connection