繁体   English   中英

ADO.NET连接字符串错误

[英]ADO.NET connection string error

首先,是C#编程的新手。 我已经创建了一个专用类,按照下面的代码从Visual Studio 2010中Web服务应用程序的app.config获取连接字符串。

在构建代码时,我通过catch块得到以下错误:

“名称“连接”在当前上下文中不存在”。

显然,连接超出了范围。

  1. 如何避免此错误?
  2. 这里是否正确使用了Dispose方法?

public class FCSConnection : IDisposable
{
    public string GetDefaultConnectionString()
    {   
        string DefaultConnectionString = null;
        try
        {
            DefaultConnectionString = ConfigurationManager.AppSettings["ConnectionString"];
            SqlConnection connection = new SqlConnection(DefaultConnectionString);
            connection.Open();
            return DefaultConnectionString;
        }
        catch (Exception)
        {
            if (DefaultConnectionString != null)
            {
                connection.Dispose();
            }
        }
        return DefaultConnectionString;
    }

    public void Dispose()
    {
        throw new NotImplementedException();
    }        
}

确切的编译器消息引用您的catch语句:

connection.Dispose();

在这里, connection是一个未知名称,因为它是在try块内声明的。

至于您的整个代码,我认为这也是错误的。 如果希望FCSConnection类封装SQL连接,则应connection声明为私有成员,然后将其处置在Dispose()方法中。

public class FCSConnection : IDisposable
{
    private SqlConnection connection = null;

    public string GetDefaultConnectionString()
    {   
        string defaultConnectionString = null;
        try
        {
            defaultConnectionString = ConfigurationManager.AppSettings["ConnectionString"];
            connection = new SqlConnection(defaultConnectionString);
            connection.Open(); // are you sure want to keep the connection being opened??
        }
        catch
        {
            Dispose();
        }
        return defaultConnectionString;
    }

    public void Dispose()
    {
        if (connection != null)
        {
            connection.Dispose();
            connection = null; // to avoid repeat dispose
        }
    }        
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM