Heim >Datenbank >MySQL-Tutorial >Warum tritt „DataReader muss zuerst geschlossen werden' auf und wie kann ich das Problem beheben?
Datenverwaltungsausnahme: Fehler „DataReader muss zuerst geschlossen werden“ verstehen und beheben
Im bereitgestellten Code versuchen Sie, einen neuen auszuführen SQL-Anweisung mit ExecuteNonQuery(), während ein DataReader noch für dieselbe Verbindung geöffnet ist. Dies löst die Ausnahme aus: „Dieser Verbindung ist bereits ein geöffneter DataReader zugeordnet, der zuerst geschlossen werden muss.“
Laut MSDN tritt diese Ausnahme auf, weil bei geöffnetem DataReader die von ihm verwendete Verbindung ausschließlich gesperrt ist für die Dauer seiner Nutzung. Dies bedeutet, dass keine anderen Befehle, einschließlich der Erstellung eines neuen DataReaders, für diese Verbindung ausgeführt werden können, bis der ursprüngliche DataReader geschlossen wird.
Um diesen Fehler zu beheben, sollten Sie sicherstellen, dass der DataReader geschlossen ist, bevor Sie versuchen, andere auszuführen Befehle auf derselben Verbindung. Im bereitgestellten Code kann dies erreicht werden, indem unmittelbar vor der Zeile, die die Ausnahme auslöst, ein Aufruf von myReader.Close() hinzugefügt wird:
myCommand.Dispose(); myReader.Close(); // Close DataReader if (myReader.HasRows) { int i = 0; // Always call Read before accessing data. while (myReader.Read()) { if (myReader["frProductid"].ToString() == "") //there is no productid exist for this item { strInsertSQL = "Insert Into tblProduct_temp (Productid) Values('this istest') "; MySqlCommand cmdInserttblProductFrance = new MySqlCommand(strInsertSQL, myConnection); cmdInserttblProductFrance.ExecuteNonQuery(); // ExecuteNonQuery after closing DataReader } } }
Durch Schließen des DataReader vor der Ausführung des Befehls ExecuteNonQuery() können Sie Geben Sie die exklusive Sperre für die Verbindung frei und lassen Sie zu, dass der neue Befehl erfolgreich ausgeführt wird.
Das obige ist der detaillierte Inhalt vonWarum tritt „DataReader muss zuerst geschlossen werden' auf und wie kann ich das Problem beheben?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!