c# - 在 ADO.NET 中处理 "using"语句

标签 c# asp.net .net ado.net

我想在退出方法时正确处理 SqlConnection 对象。所以我使用如下所示的“using”语句。

public int Hello()
{
   using(SqlConnection con=new SqlConnection(constring))
   {
      using(SqlCommand cmd=new SqlCommand(Query,con))
      {
       try
       {
          con.Open();
          return cmd.ExecuteNonQuery();
       }
       catch(Exception ex)
       {
          throw ex;
       }
       finally
       {
          con.Close()
       }
      }
   }
}

现在,我想知道的是,上面的代码会不会

  1. 当 ExecuteNonQuery 中发生Exception 时正确处理连接。
  2. 确保我们不会遇到任何连接池问题
  3. 确保数据正确返回
  4. 如果 SqlConnection 发生异常,它会处理对象吗?

谁能帮我解决这个问题?

最佳答案

如果您只是想抛出它,则不需要 try/catch,只需将您的代码更改为:

public int Hello()
{
    using(SqlConnection con=new SqlConnection(constring))
    {
        using(SqlCommand cmd=new SqlCommand(Query,con))
        {
            con.Open();
            return cmd.ExecuteNonQuery();
        }
    }
}

并且无论发生什么情况,无论是否有异常,如果连接处于打开和处置状态,连接都将关闭。

关于c# - 在 ADO.NET 中处理 "using"语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18462707/

相关文章:

c# - 在 WHILE 循环中处理 C# 文件流输入导致执行时间错误

c# - 在 Sonar 中获取代码覆盖率但没有测试结果 (.Net)

c# - 有没有办法创建或更新 MongoDB 索引?

c# - 在 ASP.NET Core 的存储库模式中使用接口(interface)和抽象类

c# - 如何处理或检测 VB.NET 中的网络故障?

c# - 如何在 EF Core 表达式中使用继承的属性?

c# - Silverlight 3 - Canvas 上矩形的数据绑定(bind)位置

c# - 应用程序见解上的性能计数器错误的更好解决方案是什么?

c# - VB.NET 等同于 C# 属性简写?

asp.net - 指定多行文本框的最大长度