我有以下课程:
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;
}
感谢您的帮助。
答案 0 :(得分:1)
不,适配器不会连接。你应该至少改变它:
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
}
通过这种方式,您可以更灵活地传递其他连接 - 如果您需要一些特殊的环境。
答案 1 :(得分:1)
如果您丢弃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;
}