2016-06-14 33 views
-1

을 사용하여 닫아야합니다. "이 Connection과 관련된 열려있는 DataReader가 이미 닫혀 있어야합니다."라는 오류가 나타납니다. 명령을 사용하여 시도했지만 여전히이 문제를 해결할 수 없습니다. 내가 사용하고있는 코드는 다음과 같습니다.이미이 Connection과 연결된 열린 DataReader가 있습니다.이 연결은 먼저 C#

원래 코드 아래에서 (명령을 사용하지 않고) 시도했습니다.

conn.Open(); 
    queryStr = ""; 
    queryStr = "select * from mydata.items;"; 
    cmd = new MySqlCommand(queryStr, conn); 
    cmd.ExecuteReader(); 
    MySqlDataAdapter MyAdapter = new MySqlDataAdapter(); 
    MyAdapter.SelectCommand = cmd; 
    DataTable dTable = new DataTable();   
    MyAdapter.Fill(dTable); 
    GridView1.DataSource = dTable; 
    conn.Close(); 

그러나 코드를 모두 정확히 같은 오류를주고있다 (먼저 닫아야이 연결과 관련된 열린 DataReader가 이미 있습니다 즉.) 당신의 도움이 정말 감사하겠습니다. 미리 감사드립니다.

+0

당신은 왜'cmd.ExecuteReader();'라인이 필요하다고 생각합니까? 데이터 판독기를 열어 오류 메시지가 알려주고 무시하고 누설하는 오류입니다. –

답변

1

데이터 세트의 사용은 table이 아니라보다 편리하고 효율적입니다. 캐시해도됩니다.
MySqlAdapter의 fill 메서드가 모든 것을 수행하기 때문에 construct를 사용할 필요가 없습니다

i) 연결을 엽니 다. ii) 명령을 실행하십시오. ii) 명령을 실행하십시오. ii) 연결을 닫으십시오.

+0

고맙습니다. 그렇게 상세하고 명확한 정교함을 위해 Hameed. – Farrah

1

이 줄은 당신이 폐쇄하지 않을 DataReader를 작성

cmd.ExecuteReader(); 

를 그냥 전체 줄을 제거를, 당신의 경우에 쓸모가 없어요.

+0

답장을 보내 주셔서 감사합니다. 오류가 사라졌습니다. 하지만 아직 아무것도 보이지 않습니다. – Farrah

+1

webform 인 경우'GridView1.DataBind();'를 호출해야합니다. 그렇지 않으면'dTable'이 null입니다. –

관련 문제