Bạn có thể tải kết quả truy vấn của mình vào bộ nhớ, sau đó đóng kết nối và vẫn trả về IDataReader
hoạt động như mong đợi. Lưu ý rằng điều này tốn bộ nhớ.
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;
}
Trong số người gọi:
String sql = "SELECT * FROM `table`";
var dr = objDB.getRecord(sql); // or DataTableReader dr = ...
if (dr.Read())
{
// some code goes here
}