Rumah >pangkalan data >tutorial mysql >Mengapa Saya Mendapat \'Sudah ada DataReader terbuka yang dikaitkan dengan Sambungan ini yang mesti ditutup dahulu\'?
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!