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
Lepaskan: 2024-12-05 08:38:10
asal
758 orang telah melayarinya

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();
                        }
                    }
                }
            }
        }
    }
}
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan