如何关闭 oledbconnection 对象?

发布于 2024-09-30 03:59:21 字数 191 浏览 2 评论 0原文

好的,我有一个 A 类,它实现方法 M1,该方法采用 excel 路径和工作表名称,并返回 OledbDataReader 。 类 B 调用方法 M1 ,对 OledbDataReader 执行一些操作,然后关闭 OledbDataReader。但我如何关闭 OLEDBConnection 对象?我无法访问它,因为 A 类中的 M1 打开了连接!有什么想法吗?谢谢你

ok so i have a Class A that implements method M1 that takes an excel path and a sheet name, and returns an OledbDataReader .
Class B calls the method M1 , does some stuff with the OledbDataReader, then closes the OledbDataReader. but how can i Close The OLEDBConnection object? i dont have access to it because M1 in Class A opened the connection ! any ideas? thank youu

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

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

发布评论

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

评论(3

虫児飞 2024-10-07 03:59:21

您可以像这样重塑您的类 A:

class HelperClass : IDisposable
{
    private bool _disposed;
    private OleDbConnection _connection;

    public HelperClass()
    {
        _connection = << open the conection >>;
    }

    public OledbDataReader GetOpenedReader()
    {
        return << open your reader here with the connection >>;
    }

    public void Dispose()
    {
        if (!_disposed)
        {
            _disposed = true;

            _connection.Dispose();
        }
    }
}

然后调用类有责任像这样使用您的类:

using (var helperClass = new HelperClass())
{
    // call the method that opens the reader and uses it
}

You can remodel your class A like this:

class HelperClass : IDisposable
{
    private bool _disposed;
    private OleDbConnection _connection;

    public HelperClass()
    {
        _connection = << open the conection >>;
    }

    public OledbDataReader GetOpenedReader()
    {
        return << open your reader here with the connection >>;
    }

    public void Dispose()
    {
        if (!_disposed)
        {
            _disposed = true;

            _connection.Dispose();
        }
    }
}

Then it's the resposibility of the calling class to use your class like this:

using (var helperClass = new HelperClass())
{
    // call the method that opens the reader and uses it
}
倾其所爱 2024-10-07 03:59:21

如果您在外部类中有这样的使用。

 using (OleDbConnection connection = new OleDbConnection(connectionString))
 {



}

这将及时处理掉这一切......

IF you have a using in your outer class like so.

 using (OleDbConnection connection = new OleDbConnection(connectionString))
 {



}

This will dispose of it all in good time...

枫林﹌晚霞¤ 2024-10-07 03:59:21

在 A 类中实现 IDisposable

Implement IDisposable in class A

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