Sie können die Ergebnisse Ihrer Abfrage in den Speicher laden, dann die Verbindung schließen und dennoch einen IDataReader
zurückgeben das funktioniert wie erwartet. Beachten Sie, dass dies Speicherplatz kostet.
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;
}
In den Anrufern:
String sql = "SELECT * FROM `table`";
var dr = objDB.getRecord(sql); // or DataTableReader dr = ...
if (dr.Read())
{
// some code goes here
}