집 >데이터 베이스 >MySQL 튜토리얼 >\'DataReader를 먼저 닫아야 합니다\'가 발생하는 이유는 무엇이며 어떻게 해결할 수 있습니까?
데이터 관리 예외: "DataReader를 먼저 닫아야 합니다" 오류 이해 및 해결
제공된 코드에서 새 DataReader가 동일한 연결에 대해 열려 있는 동안 ExecuteNonQuery()를 사용하는 SQL 문입니다. 이로 인해 "먼저 닫아야 하는 이 연결과 연결된 열려 있는 DataReader가 이미 있습니다."라는 예외가 발생합니다.
MSDN에 따르면 이 예외는 DataReader가 열려 있을 때 사용하는 연결이 독점적으로 잠겨 있기 때문에 발생합니다. 사용 기간 동안. 이는 원래 DataReader가 닫힐 때까지 해당 연결에 대해 새 DataReader 생성을 포함한 다른 명령을 실행할 수 없음을 의미합니다.
이 오류를 해결하려면 다른 명령을 실행하기 전에 DataReader가 닫혀 있는지 확인해야 합니다. 동일한 연결에 대한 명령. 제공된 코드에서 예외를 발생시키는 줄 바로 앞에 myReader.Close()에 대한 호출을 추가하면 이를 수행할 수 있습니다.
myCommand.Dispose(); myReader.Close(); // Close DataReader 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); cmdInserttblProductFrance.ExecuteNonQuery(); // ExecuteNonQuery after closing DataReader } } }
ExecuteNonQuery() 명령을 실행하기 전에 DataReader를 닫으면 연결에 대한 배타적 잠금을 해제하고 새 명령이 성공적으로 실행되도록 허용합니다.
위 내용은 \'DataReader를 먼저 닫아야 합니다\'가 발생하는 이유는 무엇이며 어떻게 해결할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!