Heim > Datenbank > MySQL-Tutorial > Wie löse ich die SQL-Ausnahme „Es ist bereits ein geöffneter DataReader…' auf?

Wie löse ich die SQL-Ausnahme „Es ist bereits ein geöffneter DataReader…' auf?

Linda Hamilton
Freigeben: 2024-12-04 19:54:11
Original
257 Leute haben es durchsucht

How to Resolve the

SQL-Ausnahme: „Dieser Verbindung ist bereits ein geöffneter DataReader zugeordnet, der zuerst geschlossen werden muss“

Diese Ausnahme tritt auf, wenn ein DataReader ist noch geöffnet, während versucht wird, einen anderen SQL-Befehl auf derselben Verbindung auszuführen. So lösen Sie das Problem basierend auf dem angegebenen Code:

In Ihrem Code öffnen Sie einen DataReader mit der ExecuteReader()-Methode und versuchen dann, einen anderen Befehl mit ExecuteNonQuery() auszuführen. Dies ist nicht zulässig, da der DataReader die Verbindung sperrt. Um dieses Problem zu beheben, schließen Sie den DataReader, bevor Sie weitere Befehle ausführen.

SQL = "Select * from tblProduct";

//Create Connection/Command/MySQLDataReader
MySqlConnection myConnection = new MySqlConnection(cf.GetConnectionString());
myConnection.Open();
MySqlCommand myCommand = new MySqlCommand(SQL, myConnection);
MySqlDataReader myReader = myCommand.ExecuteReader();
myCommand.Dispose();

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);
            
            // Close the DataReader before executing the new command
            myReader.Close();
            
            cmdInserttblProductFrance.ExecuteNonQuery(); // Now this will execute successfully
        }
    }
}
Nach dem Login kopieren

Nach dem Schließen des DataReader können Sie den Befehl cmdInserttblProductFrance ausführen, ohne auf die Meldung „Dieser Verbindung ist bereits ein offener DataReader zugeordnet, der vorhanden sein muss zuerst geschlossen werden“-Ausnahme.

Das obige ist der detaillierte Inhalt vonWie löse ich die SQL-Ausnahme „Es ist bereits ein geöffneter DataReader…' auf?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage