C# 데이터베이스 작업 오류: There is already an open DataReader associated with this Connection which must be closed...
1631 단어 C#
추가 정보: There is already an open DataReader associated with this Connection which must be closed first.이 명령과 연관된 DataReader가 이미 열려 있으므로 먼저 닫아야 합니다.
자료를 찾아보니 해결 방법이 있는 문장을 찾았는데 수정한 후에 과연 문제를 해결했다. 문장은 다음과 같다.
1. DataReader가 켜서 사용할 때 하나의 SqlConnection에서 하나의 DataReader만 열 수 있기 때문에 다른 DataReader를 열 때 앞의 하나를 먼저 Close를 제거해야 한다.2. 제가 문장에 DataReader를 사용하지 않았고 똑같은 오류를 제시하지 않았을 수도 있습니다. 이 DataReader가 어디에 숨겨져 있는지 제가 여러분께 지적해 드리겠습니다. 제가 연구한 것이 깊이가 없기 때문에 한 가지 방법만 호출하면 DataReader가 생성될 수 있습니다. 이것도 절대 다수의 사람들이 골치 아픈 문제라고 생각합니다.데이터베이스를 업데이트하거나 문장을 삽입할 때 사람들은 보통 SqlCommand의 ExecuteNonQuery () 방법을 사용하고 전제는 공공 데이터베이스 연결을 정의하는 것이다. (조회할 때마다 새로운 연결을 생성하면 이 문제가 존재하지 않지만 데이터베이스가 차지하는 자원이 상대적으로 높을 것이다.) ExecuteNonQuery () 를 사용하면 내부에 빈 DataReader 대상이 생성된다.그리고 현재 데이터베이스 연결이 닫힌 후에야 DataReader가 해제됩니다.따라서 업데이트 방법을 사용할 때 using 키워드를 추천합니다. 이것은 문장으로 정의된 범위 내의 대상을 모두 방출할 수 있습니다.
내 데이터베이스 작업의 주요 코드는 다음과 같습니다.
MySqlConnection con = null;
if (con == null)
{
con = new MySqlConnection("Server=localhost;User ID=root;Password=root;Database=vs2015test");
}
if (con.State == ConnectionState.Closed)
{
con.Open();
}
using (MySqlCommand cmd = new MySqlCommand(insert, con))
{
cmd.Parameters.Add("@Temperature", MySqlDbType.Double,5).Value = Temp;
cmd.ExecuteNonQuery();
}
if (con != null || con.State == ConnectionState.Open)
{
con.Close();
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
WebView2를 Visual Studio 2017 Express에서 사용할 수 있을 때까지Evergreen .Net Framework SDK 4.8 VisualStudio2017에서 NuGet을 사용하기 때문에 패키지 관리 방법을 packages.config 대신 PackageReference를 사용해야...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.