【问题标题】:How to optimally handle sql connections in vb.net?如何优化处理 vb.net 中的 sql 连接?
【发布时间】:2014-06-12 10:01:27
【问题描述】:

ASP.NET 网络编程

如何优化处理

  • 打开
  • 关闭
  • 处理
  • 异常

从数据库中检索数据时。

寻求优化

我一直使用以下方法建立连接,捕获任何错误,然后在任一事件中正确处理连接。

VB.NET

Try
  con.Open()
  //...
  con.Close()
Catch ex As Exception
  lbl.Text = ex.Message
Finally
  If con IsNot Nothing Then
    con.Dispose()
  End If
End Try

在阅读了许多文章后,我发现人们几乎对这段代码感到厌恶;但是,我看不出有任何其他方法可以有效满足所需的四个步骤。

替代方案,我相信对 cpu 更友好的 USING 语句似乎是正确处理 sql 连接的首选工具。但是,当从数据库中检索到错误数据并且没有任何地方可以向最终用户指示出了什么问题时会发生什么?

问题

介于:使用try catch其他

哪种方式更快、更简洁和/或最有效地处理数据检索语句?

我很高兴听到人们的意见,但我正在寻找事实。

【问题讨论】:

    标签: asp.net .net vb.net try-catch


    【解决方案1】:

    您还可以使用以下代码块作为模板。它结合了 Using...End Using 和 Try...Catch 块。

    Using conn As New SqlConnection(My.Settings.SQLConn)
        Try
            Conn.open
        Catch ex As SqlException
    
        End Try    
    End Using
    

    无需调用conn.Dispose(),因为使用块会自动完成。

    【讨论】:

    • 所以我以前听过很多次,但这对我来说似乎是多余的。无论如何, using 都被编译为 try/catch 。在 using 中嵌套 try/catch 似乎是糟糕的代码。在 finally 块中添加 con.close 肯定比在 using 块中包装 try/catch 更有效?
    • 好点。此外,我认为 try/catch 很好,因为您有机会处理异常并执行必要的日志记录/清理步骤。如果我有新信息,我会做更多的研究和更新。
    【解决方案2】:

    使用实体框架,它为您高效地实现工作单元模式,并在事务范围内执行您的操作

    【讨论】:

      【解决方案3】:

      始终使用“使用”进程,因为它会自动分配然后释放系统资源。您仍然可以在其中执行 try-catch 以向用户显示错误。

      【讨论】:

      • 所以我以前听过很多次,但这对我来说似乎是多余的。无论如何, using 都被编译为 try/catch 。在 using 中嵌套 try/catch 似乎是糟糕的代码。在 finally 块中添加 con.close 肯定比在 using 块中包装 try/catch 更有效?
      • 在 Using 中尝试...finally 是可以接受的。 msdn.microsoft.com/en-us/library/htd05whh.aspx
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-03-10
      • 1970-01-01
      • 2018-10-30
      • 2012-06-28
      • 2018-03-24
      • 1970-01-01
      • 2016-04-15
      相关资源
      最近更新 更多