Heim > Datenbank > MySQL-Tutorial > Warum erhalte ich die Meldung „Dieser Verbindung ist bereits ein geöffneter DataReader zugeordnet, der zuerst geschlossen werden muss'?

Warum erhalte ich die Meldung „Dieser Verbindung ist bereits ein geöffneter DataReader zugeordnet, der zuerst geschlossen werden muss'?

Mary-Kate Olsen
Freigeben: 2024-12-05 08:38:10
Original
758 Leute haben es durchsucht

Why Am I Getting

Fehlerbehebung „Dieser Verbindung ist bereits ein offener DataReader zugeordnet, der zuerst geschlossen werden muss“

In Ihrem Code versuchen Sie es um eine weitere SQL-Anweisung („Insert Into tblProduct_temp“) auszuführen, während ein Datenleser noch geöffnet ist, was zu der Ausnahme führt: „Es ist bereits ein offener DataReader zugeordnet mit dieser Verbindung, die zuerst geschlossen werden muss.“

Grund:

MySQL-Verbindungen behalten eine exklusive Sperre für die Verbindungsressource bei, wenn ein Datenleser geöffnet ist. Dadurch wird verhindert, dass andere Vorgänge auf die Verbindung zugreifen, bis der Datenleser geschlossen wird.

Lösung:

Um dieses Problem zu beheben, müssen Sie den Datenleser schließen, bevor Sie den neuen ausführen SQL-Anweisung. Die empfohlene Methode hierfür ist die Verwendung einer using-Anweisung oder eines try-finally-Blocks, um sicherzustellen, dass der Reader ordnungsgemäß geschlossen wird, auch wenn eine Ausnahme auftritt.

Hier ist der überarbeitete Code, der eine using-Anweisung verwendet:

using (MySqlConnection myConnection = new MySqlConnection(cf.GetConnectionString()))
{
    myConnection.Open();

    using (MySqlCommand myCommand = new MySqlCommand(SQL, myConnection))
    {
        using (MySqlDataReader myReader = myCommand.ExecuteReader())
        {
            if (myReader.HasRows)
            {
                int i = 0;
                while (myReader.Read())
                {
                    if (myReader["frProductid"].ToString() == "")
                    {
                        strInsertSQL = "Insert Into tblProduct_temp (Productid) Values('this istest') ";
                        using (MySqlCommand cmdInserttblProductFrance = new MySqlCommand(strInsertSQL, myConnection))
                        {
                            cmdInserttblProductFrance.ExecuteNonQuery();
                        }
                    }
                }
            }
        }
    }
}
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonWarum erhalte ich die Meldung „Dieser Verbindung ist bereits ein geöffneter DataReader zugeordnet, der zuerst geschlossen werden muss'?. 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