【问题标题】:Are these two connections to ADO.NET the same (with connection pooling enabled)?这两个到 ADO.NET 的连接是否相同(启用了连接池)?
【发布时间】:2022-01-13 08:36:36
【问题描述】:

第二种用法(代码sn-p 2)有问题吗?如果有,有什么问题?

// ---Code snippet 1---
IDbConnection connection = new SqlConnection(connStr)
using(connection)
{
    connection.Open(); // Open a connection in “using”
    todo...
}


// ---Code snippet 2---
IDbConnection connection = new SqlConnection(connStr)
connection.Open(); // Open a connection outside “using”
using(connection) 
{ 
    todo...
}

【问题讨论】:

    标签: c# .net .net-core ado.net


    【解决方案1】:

    using 语句只是用于正确处理IDisposable 对象的内置语言支持,使用它可以确保您的一次性对象在应有的时候被丢弃。

    它基本上转换为 try-finally 对,在 finally 块中有一个 dispose 调用。 你可以阅读更多关于 using 语句here

    也就是说,您应该将 using 关键字放在创建一次性对象的第一条语句中,因此您的代码的正确版本是:

    using (var connection = new SqlConnection(connStr))
    {
        connection.Open(); // Open a connection in “using”
        todo...
    }
    

    我认为 using 关键字的放置对连接对象的作用或外观没有任何影响。

    【讨论】:

    • 或者换句话说:问题中的两个版本都是错误的
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-03-28
    • 1970-01-01
    相关资源
    最近更新 更多