Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Ungültiger Leseversuch bei geschlossenem Reader

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
}