Usuario
Un recordset que no siempre lee

Debate general
-
¡Hola compañeros de código! Estoy teniendo un problema con un recordset. Básicamente el problema está en que nunca usé recordsets, no son de mi agrado, pero estoy programando una aplicación de huellas que viene con un ejemplo, y no consigo hacerlo con datatables.
Así qeu este es el problema: cargo las huellas, pero al momento de leerlas, cuando hay una sola huella o a veces cuando sólo hay registradas dos, ocurre que el recordset no lee. Tengo el siguiente código:
rs = _DB.getTemplates(); while(rs.Read()) { //Realizo los pasos de comparación }
Pongo un breakPoint y nunca entra por la parte comentada, sale del while directamente.
He revisado en las propiedades del recordset y me dice que tiene "HasRows = true; FieldCount = 2". Entonces ¿no debería entrar?.
Por las dudas pongo el código de la función que me devuelve el recordset:
¿Me podrían dar una ayudita?public MySqlDataReader getTemplates() { MySqlDataReader rs; //Se insertan los datos para enrolar Acceso oDB = new Acceso(ControlDeAcceso.Clases.XML.LeerNodoXML("dbP", "s"), ControlDeAcceso.Clases.XML.LeerNodoXML("dbP", "u"), ControlDeAcceso.Clases.XML.LeerNodoXML("dbP", "p")); oDB.Conectar(); oDB.CrearComando("SELECT id_persona,huella FROM bdb.huellas;", false); rs = oDB.EjecutarDataReader(); return rs; }
Gabriela- Tipo cambiado Gabriela Calligaro Bosetti martes, 11 de enero de 2011 1:41 No tiene respuesta solución
Todas las respuestas
-
prueba con este codigo , para ver el resultado ,quisas el problema sea el querry
if (reader.HasRows) while (reader.Read()) Console.WriteLine("\t{0}\t{1}", reader.GetInt32(0), reader.GetString(1)); else Console.WriteLine("No rows returned."); reader.Close();
Live like you'll die tomorrow, learn like you'll live forever. http://underframework.wordpress.com/ -
-
hola
un recorset ? pero si eso que se ve alli es un DataReader de ado.net, el recorset el nombre usado en ADO en VB6, lo que estas suando alli no es un recordset, recomiendo no lo llames de esta forma porque traera confusion, en la pregunta y a ti tambien cuando busques info sobre el tema
no creo que el DataReader sea un objeto indicado para devolverse en la llamada de un metodo, recuerda que este objeto es conectado, por lo tanto no podras cerrar la conexion si es que quieres trabajarlo, esto causa mucho problemas por eso lo idea cuando necesitas devolver info, sera un datatable o dataset
el datareader es ideal para accederse en el mismo metodo, recorrerse secuancialmente cargando o procesando otro objeto, y luego cerrarse, pero no soy muy partidario de devolcerlo como parametro como resultado de una query
igualmente una consulta, esto sucede cuando estas depurando ? o cuando eejcutas la aplicacion tambien sucede ?
lo pregunto porque el datareader puede que se comporte distinto mientras depuras, me ha sucedido que cuando estas depurando se puerde el cursor, por eso pruebalo ejecutar sin debug, en todo caso loguea la info por donde pasa en algun otro campo, o en un archivo de texto, para ver como se comporta
saludos
Leandro Tuttini
Blog
Buenos Aires
Argentina -
Bueno no debería causar problemas, veo que tienes especificada la base de datos en el select "bdb", se me ocurre que de repente tendria que revisar si tienes varias bases de datos y si esa de ahí tiene datos en la tabla especificada.
Jackson Rosado Developer c#, VFP, PL/SQL DBA - Oracle 10g -