已实例化为方法参数c#的Dispose对象
本文关键字:Dispose 对象 参数 实例化 方法 | 更新日期: 2023-09-27 18:19:44
我有以下类:
private static readonly string ConnectionString = "Dummy";
public static SqlConnection GetConnection()
{
SqlConnection Connection = new SqlConnection(ConnectionString);
return Connection;
}
public static SqlDataAdapter GetDataAdapter(string Query)
{
SqlDataAdapter Adapt = new SqlDataAdapter(Query, GetConnection());
return Adapt;
}
- 在SqlDataAdapter构造函数中将GetConnection()作为参数传递时,如何处理实例化的SqlConnection对象
- 当我在调用GetDataAdapter()的方法中处理Adapt对象时,它会自动被处理吗
- 如果无法处理,您建议如何处理
谢谢你的帮助。
描述
如果您丢弃SqlDataAdapter
,它也不会丢弃SqlConnection
,因为不清楚您是否要再次使用连接。你必须改变你的设计才能完成这件事。
我建议将SqlConnection
传递给GetDataAdapter
函数。
样品
static void Main(string[] args)
{
using (SqlConnection connection = GetConnection())
{
using (SqlDataAdapter adapter = GetDataAdapter("YourQuery", connection))
{
}
// SqlDataAdapter is disposed
}
// SqlConnection is disposed
}
private static readonly string ConnectionString = "Dummy";
public static SqlConnection GetConnection()
{
SqlConnection Connection = new SqlConnection(ConnectionString);
return Connection;
}
public static SqlDataAdapter GetDataAdapter(string Query, SqlConnection connection)
{
SqlDataAdapter Adapt = new SqlDataAdapter(Query, connection);
return Adapt;
}
否,适配器不偶极连接。你至少应该把它改成这样:
public static SqlDataAdapter GetDataAdapter(SqlConnection connection, string Query)
{
SqlDataAdapter Adapt = new SqlDataAdapter(Query);
Adapt.Connection = connection;
return Adapt;
}
并像这个一样使用它
using (var connection = GetConnection())
using (var adapter = GetAdapter(connection, query))
{
// do stuff
}
通过这种方式,您还可以传递一些其他连接,以防您在某些特殊情况下需要它。