집 >데이터 베이스 >MySQL 튜토리얼 >\'먼저 닫아야 하는 이 연결과 연결된 열려 있는 DataReader가 이미 있습니다\'라는 메시지가 나타나는 이유는 무엇입니까?
문제 해결 "이 연결과 관련된 열려 있는 DataReader가 이미 있으므로 먼저 닫아야 합니다."
코드에서 다음을 시도하고 있습니다. 데이터 판독기가 아직 열려 있는 동안 다른 SQL 문("Insert Into tblProduct_temp")을 실행하면 예외가 발생합니다. 먼저 닫아야 하는 이 연결과 관련된 열려 있는 DataReader."
이유:
MySQL 연결은 데이터 리더가 열려 있을 때 연결 리소스에 대한 배타적 잠금을 유지합니다. . 이렇게 하면 데이터 리더가 닫힐 때까지 다른 작업이 연결에 액세스하지 못합니다.
해결책:
이 문제를 해결하려면 새 리더를 실행하기 전에 데이터 리더를 닫아야 합니다. SQL문. 이를 수행하는 권장 방법은 예외가 발생하더라도 판독기가 올바르게 닫히도록 using 문이나 try-finally 블록을 사용하는 것입니다.
다음은 using 문을 사용하여 수정된 코드입니다.
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(); } } } } } } }
위 내용은 \'먼저 닫아야 하는 이 연결과 연결된 열려 있는 DataReader가 이미 있습니다\'라는 메시지가 나타나는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!