Einen SqlCommand.ExecuteReader() schliessen?



  • Hi,

    in meiner Software hat folgendes einen Bug verursacht:

    SqlConnection conn = new SqlConnection("...");
    SqlCommand cmd = new SqlCommand("...", conn);
    SqlDataReader r = cmd.ExecuteReader();
    
    // Bis zur naechsten Zeile steht hier nur wenig Code, der schnell
    // abgearbeitet wird.
    
    r.Close(); // wirft *manchmal* eine Exception 
    conn.Close();
    

    Die Message der Exception war ca. "Timout vor Beenden der Operation abgelaufen, oder der Server reagiert nicht mehr".

    Dann habe ich einen Blick in die MSDN geworfen und anhand der Code-Beispiele erfahren, dass es nicht noetig ist, den reader manuell zu schliessen. Was ich dann gemacht habe: das Schliessen des readers auskommentiert, und es lief.

    Aber warum? Der reader bietet schliesslich eine Close-Methode an. Hat jemand eine Idee, was hier schief gelaufen ist? Schliesst man einen SqlDataReader vielleicht nicht, wenn er vom SqlCommand erzeugt wird?


Anmelden zum Antworten