gpt4 book ai didi

C# 如何使我的 sqlDataReader 脱机?

转载 作者:搜寻专家 更新时间:2023-10-30 19:58:13 29 4
gpt4 key购买 nike

我有内存泄漏,由于没有正确关闭连接。这是由于使用全局函数访问数据库(使用不同的 sql 字符串),但我传回了一个 sqldatareader。 我无法在方法中关闭它,也无法关闭与数据库的连接,因为它会关闭对数据的访问!而且它无法从该方法外部正确关闭。 :(

有什么方法可以获取所需的表,sqldatareader 授予离线访问权限。这样我就可以关闭所有连接,但仍然可以访问该表。

请注意,返回的表不同,因此存在不同的字段。我不想每次尝试连接时都必须重复代码。

private SqlDataReader OpenDataStream(String sql)
{
SqlCommand sqlComm = new SqlCommand();
sqlComm.Connection = new SqlConnection();
sqlComm.Connection.ConnectionString = @"Myconnectionstring";
sqlComm.CommandText = sql;
sqlComm.Connection.Open();
SqlDataReader data = null;
data = sqlComm.ExecuteReader();

return data;

// Closing data here, or connection, results in returned object inaccessable.
}

或者可能是在方法之外(在我访问了我需要的内容之后)将其全部关闭的有效工作方式?

最佳答案

您可以只返回一个 DataTable 而不是 SqlDataReader。这将用您的数据填充表,您可以在方法结束执行之前关闭连接。

private DataTable GetDataTable(String sql)
{
SqlDataAdapter da = new SqlDataAdapter(sql, connection);
DataSet ds = new DataSet();
da.Fill(ds);
return ds.Tables[0];
}

This可能值得一读。

关于C# 如何使我的 sqlDataReader 脱机?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7913461/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com