首先,我是C#编程的新手。 我创建了一个专用类,根据下面的代码从Visual Studio 2010中的Web服务应用程序的app.config获取连接字符串。
在构建代码时,我通过catch块获得以下错误:
“当前上下文中不存在名称'connection'。”
显然连接超出了范围。
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();
}
}
答案 0 :(得分:4)
确切的编译器消息是指您的catch
声明:
connection.Dispose();
在这里,connection
是一个未知名称,因为它是在try
块内声明的。
至于你的整个代码,我认为这也是错误的。如果您希望FCSConnection
类封装SQL连接,则应将connection
声明为私有成员,然后将其置于Dispose()
方法中。
答案 1 :(得分:3)
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
}
}
}