【问题标题】:public function to create and open a database connection用于创建和打开数据库连接的公共函数
【发布时间】: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


【解决方案1】:

这是我建议您尝试的示例。

  1. 在您的项目中启用选项严格。最好在编译时而不是在运行时出错。

  2. 即使遇到异常,也可以使用 using 语句安全地处理数据库类。


Private _connectionString As String = "blah"

Public Function GetDbConnection() As NpgsqlConnection
    Dim con As New NpgsqlConnection(_connectionString)
    con.Open()
    Return con
End Function

Public Sub DoMyQuery()
    Using conn = GetDbConnection()
        Using qry = New NpgsqlCommand("update table set field = value where id = 1", conn)
            qry.ExecuteNonQuery()
        End Using
    End Using
End Sub

【讨论】:

  • 看起来我会在每次使用我的连接的地方更新代码。谢谢你的建议!
  • 是的,无论如何您都需要在每个位置进行更改。而且,如果您要对所有内容都进行一次测试,那么最好还是做对。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-04-10
  • 2021-04-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多