Rumah >pangkalan data >tutorial mysql >Mengapa Saya Mendapat \'Sudah ada DataReader terbuka yang dikaitkan dengan Sambungan ini yang mesti ditutup dahulu\'?

Mengapa Saya Mendapat \'Sudah ada DataReader terbuka yang dikaitkan dengan Sambungan ini yang mesti ditutup dahulu\'?

Mary-Kate Olsen
Mary-Kate Olsenasal
2024-12-05 08:38:10757semak imbas

Why Am I Getting

Menyelesaikan masalah "Sudah ada DataReader terbuka yang dikaitkan dengan Sambungan ini yang mesti ditutup dahulu"

Dalam kod anda, anda sedang mencuba untuk melaksanakan pernyataan SQL lain ("Masukkan Ke dalam tblProduct_temp") semasa pembaca data masih terbuka, membawa kepada pengecualian: "Sudah ada buka DataReader yang dikaitkan dengan Sambungan ini yang mesti ditutup dahulu."

Sebab:

Sambungan MySQL mengekalkan kunci eksklusif pada sumber sambungan apabila pembaca data dibuka. Ini menghalang operasi lain daripada mengakses sambungan sehingga pembaca data ditutup.

Penyelesaian:

Untuk menyelesaikan isu ini, anda mesti menutup pembaca data sebelum melaksanakan yang baharu pernyataan SQL. Cara yang disyorkan untuk melakukan ini ialah menggunakan pernyataan menggunakan atau blok cuba-akhir untuk memastikan bahawa pembaca ditutup dengan betul, walaupun pengecualian berlaku.

Berikut ialah kod yang disemak menggunakan pernyataan menggunakan:

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();
                        }
                    }
                }
            }
        }
    }
}

Atas ialah kandungan terperinci Mengapa Saya Mendapat \'Sudah ada DataReader terbuka yang dikaitkan dengan Sambungan ini yang mesti ditutup dahulu\'?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn