2016-07-19 3 views
1

MySql DataReader를 사용할 때 이상한 동작이 나타납니다. 쿼리는 MySQL 탐색기에서 올바르게 평가됩니다 (즉, 예상되는 레코드를 반환합니다). 응용 프로그램을 디버깅 할 때 그러나, 오류가 읽MySql 데이터 판독기가 행을 검색하지 않습니다.

열거 어떤 결과 굴복하지

면책 조항 : 나는 사이트

MySQL Data Reader not entering the loop

mysql datareader not finding rows c#

에 묻는 다음 질문 알고있다

mysql datareader not finding rows c#

하지만 여러 번 언급하지 않고 연결을 올바르게 열고 닫는 방법과 SQL Server 대신 Mysql을 사용하는 독자를 닫을 것입니다.

MySqlConnection conn = this.conectar(); // this method performs Conn.Open(); 
List<Clase> listaClases = new List<Clase>(); 


string query = "SELECT c.id_clase, c.descripcion, e.nombre, e.calle, e.numero, e.telefono, e.email, " 
      + "e.id_localidad, l.d_localidad, p.d_provincia, c.id_profesor, u.apellido, u.nombre, u.email " 
      + "FROM CLASE c " 
      + "JOIN USUARIO u ON c.id_profesor = u.id_usuario " 
      + "JOIN CLASE_ESTABLECIMIENTO ce ON c.id_clase = ce.id_clase " 
      + "JOIN ESTABLECIMIENTO e ON ce.id_establecimiento = e.id_establecimiento " 
      + "JOIN LOCALIDAD l ON e.id_localidad = l.id_localidad " 
      + "JOIN PROVINCIA p ON l.id_provincia = p.id_provincia " 
      + "WHERE e.id_localidad = ?idLocalidad AND c.id_clase = ?idClase "; 

MySqlCommand cmd = new MySqlCommand(query, conn); 
cmd.Parameters.Add("?idLocalidad", MySqlDbType.Int32).Value = b.idLocalidad; 
cmd.Parameters.Add("?idClase", MySqlDbType.Int32).Value = c.idClase; 
MySqlDataReader dr = cmd.ExecuteReader(); 


while (dr.Read()) 
{ 
    var idClase = dr.GetInt32(0); 
    var description = dr.GetString(1); 
    var nombreEst = dr.GetString(2); 
    var calleEst = dr.GetString(3); 
    var altura = dr.GetInt32(4); 
    var domExtra = dr.GetString(5); 
    var telefono = dr.GetString(6); 
    var emailEst = dr.GetString(7); 
    var idLoc = dr.GetInt32(8); 
    var descLoc = dr.GetString(9); 
    var prov = dr.GetString(10); 
    var idProf = dr.GetInt32(11); 
    var ape = dr.GetString(12); 
    var nom = dr.GetString(13); 
    var emailProf = dr.GetString(14); 

    listaClases.Add(/* construct class, code does not reach this point */); 
} 
dr.Close(); //close data reader 
conn.Close(); //dispose of connection 

제안이 크게 감사합니다, 감사 :

그리고 지금, 여기 내 C# 코드입니다!

+0

어디에서 오류가 발생합니까? 기다려 ....'선택 '은 선택 사항입니까? – Uueerdo

답변

0

자세히 살펴본 후 누락 된 열처럼 보였습니다. select 문에 0-13 만있을 때 0-14를 지정했습니다.

SELECT 
0 c.id_clase, 
1 c.descripcion, 
2 e.nombre, 
3 e.calle, 
4 e.numero, 
5 e.telefono, 
6 e.email, 
7 e.id_localidad, 
8 l.d_localidad, 
9 p.d_provincia, 
10 c.id_profesor, 
11 u.apellido, 
12 u.nombre, 
13 u.email 
+0

나는? 다른 모든 쿼리에 접두어를 붙이면 문제가 발생하지 않습니다. 그래도 시도해보고 알려 줘서 고마워! –

+0

내가 그렇게하면 MySQL 예외가 발생합니다. 제안을 주셔서 감사합니다 비록 –

+0

내가 내 대답을 수정 – Henry

관련 문제