Mysql
 sql >> Base de données >  >> RDS >> Mysql

Tentative de lecture non valide lorsque le lecteur est fermé

Vous pouvez charger les résultats de votre requête en mémoire, puis fermer la connexion et toujours renvoyer un IDataReader qui fonctionne comme prévu. Notez que cela coûte de la mémoire.

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;
    }

Dans les appelants :

String sql = "SELECT * FROM `table`";
var dr = objDB.getRecord(sql); // or DataTableReader dr = ...
if (dr.Read())
{
    // some code goes here
}