这里调用的是 Close on 数据库连接吗?

发布于 2025-01-07 08:21:57 字数 716 浏览 0 评论 0原文

我得到了这个代码:

try
{
    using (OracleConnection c = new OracleConnection(globalDict[byAlias(connAlias)].connString))
    {
        c.Open();

        using (OracleCommand recordExistentQuery = new OracleCommand("regular.IsExistent", c))
        {
        // here working on oraclecommand
        }
    } 
 } catch(Exception exc) { }

OracleConnection< /a> 是 Oracle 的 devArt dotConnect 类。 此代码在退出 (OracleConnection c = new OracleConnection(globalDict[byAlias(connAlias)].connString)) { .... }c.Close()代码>?

I got this code:

try
{
    using (OracleConnection c = new OracleConnection(globalDict[byAlias(connAlias)].connString))
    {
        c.Open();

        using (OracleCommand recordExistentQuery = new OracleCommand("regular.IsExistent", c))
        {
        // here working on oraclecommand
        }
    } 
 } catch(Exception exc) { }

OracleConnection is class of devArt dotConnect for Oracle.
Will this code call c.Close() when it goes out of (OracleConnection c = new OracleConnection(globalDict[byAlias(connAlias)].connString)) { .... } ?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

意犹 2025-01-14 08:21:57

不,它会调用 Dipose()using 块将在 using 语句中指定的对象上隐式调用 Dispose()

但通常情况下,对于数据库连接,Dispose() 会处理 Close() 功能,释放保持连接的连接/processId。

No, it will call Dipose(). A using block will implicitly call Dispose() on the object specified in the using statement.

But often times for a database connection, Dispose() handles the Close() functionality, releasing the connection/processId that keeps a connection.

淡淡離愁欲言轉身 2025-01-14 08:21:57

我还想补充一点,如果您的 //here 处理 oraclecommand 中的某处出现异常(基本上在您的 using(...){ } 语句中, 。

根据设计,您应该能够对实现 IDisposable 的对象进行多次调用,从而发出调用 Close() 之后using 代码块不会执行任何操作,因为连接已关闭/已返回到池中,对象清理后的任何其他调用都应该返回并执行操作。没有什么。

I would also like to add that in the event of an exception somewhere in your //here working on oraclecommand (basically inside your using(...){ } statement, Dispose() will also be called.

By design, you should be able to make multiple to calls to an object implementing IDisposable. In your case, issuing a calling a call to Close() after your using block of code will simply do nothing, as the connection has already closed/been returned to the pool. Any additional calls after the object has cleaned up should just return and do nothing.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文