Rumah > pangkalan data > tutorial mysql > Bagaimana untuk Menyelesaikan \'Sudah ada DataReader terbuka...\' Pengecualian SQL?

Bagaimana untuk Menyelesaikan \'Sudah ada DataReader terbuka...\' Pengecualian SQL?

Linda Hamilton
Lepaskan: 2024-12-04 19:54:11
asal
256 orang telah melayarinya

How to Resolve the

SQL Exception: "Sudah ada DataReader terbuka yang dikaitkan dengan Sambungan ini yang mesti ditutup dahulu"

Pengecualian ini berlaku apabila DataReader masih terbuka semasa cuba melaksanakan perintah SQL lain pada sambungan yang sama. Begini cara untuk menyelesaikan isu berdasarkan kod yang diberikan:

Dalam kod anda, anda membuka DataReader menggunakan kaedah ExecuteReader() dan kemudian cuba untuk melaksanakan arahan lain menggunakan ExecuteNonQuery(). Ini tidak dibenarkan kerana DataReader memegang kunci pada sambungan. Untuk menyelesaikan isu ini, tutup DataReader sebelum melaksanakan sebarang arahan tambahan.

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

Selepas menutup DataReader, anda boleh melaksanakan perintah cmdInserttblProductFrance tanpa menemui "Sudah ada DataReader terbuka yang dikaitkan dengan Sambungan ini yang mesti ditutup dahulu".

Atas ialah kandungan terperinci Bagaimana untuk Menyelesaikan \'Sudah ada DataReader terbuka...\' Pengecualian SQL?. 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