我的应用程序有一个通用数据库类,在该类中我有一个函数
public MySqlDataReader getRecord(string query)
{
MySqlDataReader reader;
using (var connection = new MySqlConnection(connectionString))
{
connection.Open();
using (var cmd = new MySqlCommand(query, connection))
{
reader = cmd.ExecuteReader();
return reader;
}
}
return null;
}
在我使用的页面后面的代码上
String sql = "SELECT * FROM `table`";
MySqlDataReader dr = objDB.getRecord(sql);
if (dr.Read())
{
// some code goes hear
}
我有错误阅读器关闭时尝试读取无效。
我知道数据库连接关闭后访问阅读器是不可能的
机器人我正在寻找解决方法其中我不需要在代码隐藏中进行更改
编辑:我喜欢将阅读器分配给其他对象(类似于阅读器)的解决方案,然后返回该对象所以我不需要更改所有应用程序页面
您可以将查询结果加载到内存中,然后关闭连接并仍然返回IDataReader
效果如预期。请注意,这会消耗内存。
public IDataReader getRecord(string query)
{
MySqlDataReader reader;
using (var connection = new MySqlConnection(connectionString))
{
connection.Open();
using (var cmd = new MySqlCommand(query, connection))
{
reader = cmd.ExecuteReader();
var dt = new DataTable();
dt.Load( reader );
return dt.CreateDataReader();
}
}
return null;
}
在来电者中:
String sql = "SELECT * FROM `table`";
var dr = objDB.getRecord(sql); // or DataTableReader dr = ...
if (dr.Read())
{
// some code goes here
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)