Re: Alcanse de variable
Alberto León <[email protected]> Sun, 7 Mar 2010 04:21:25 +0100
| Newsgroups | gmane.comp.gnome.mono.hispano |
|---|---|
| Message-ID | <[email protected]> |
En principio la forma en que has declarado el DataReader sería útil en el caso de que se utilizara fuera del Try posteriormente o se reusara. Pero por desgracia los DataReaders una vez se consumen dan mucho problemas y es mejor instanciar nuevos DataReaders. Principalmente porque suele aparecer el mensaje "another DataReader is used by connection" o algo así. El ciclo de vida de un DataReader termina cuando lo recorres o le haces un bind. De hecho los bind directamente le llaman a Dispose al recorrerlo. Y en un while al terminarlo te lo deja en EOF. Así que el ámbito de tu DataReader se queda dentro del Try, no tiene sentido k lo declares primero a nulo y después le asignes el valor devuelto por el comando. 2010/3/7 Martin Ibarra <[email protected]> > > Saludos Alberto, > al parecer el problema estaba en que no esta asignado a null > > Aqui la respuesta del canal de #mono en irc.gnome.net > > <macsharp> you could assign dr to null when it is declared > <macsharp> your exact problem is that before "dr = cmd.ExecuteReader()" > happens an exception could be thrown > <macsharp> and caught by your "catch (Exception e)" which catches *all* > exceptions > > tu codigo tambien trabaja ahora solo ver cual usare o cual me aparendere , > saludos. y gracias por sus prontas respuestas. > > > > 2010/3/6 Alberto León <[email protected]> > > Este es el código correcto: >> >> >> public NpgsqlDataReader getUserList() >> { >> string sql = "select nombre,usuario,estatus from ch_usuario"; >> ArrayList al = new ArrayList(); >> >> try{ >> >> NpgsqlConnection conn = new NpgsqlConnection(Util.CONN); >> conn.Open(); >> >> NpgsqlCommand cmd = new NpgsqlCommand(sql,conn); >> NpgsqlDataReader dr = cmd.ExecuteReader(); >> >> }catch(Exception e){ >> Util u = new Util(); >> u.WinInfo("Error al Cargar la lista de usuarios " + >> e.Message.ToString(), "Error"); >> } >> return dr; >> } >> >> 2010/3/7 Martin Ibarra <[email protected]> >> >>> Que tal monos, trabajando con Postgres SQL y mono me a causado interes >>> este codigo que no se puede ejcutar. >>> >>> >>> >>> >>> public NpgsqlDataReader getUserList() >>> { >>> string sql = "select nombre,usuario,estatus from ch_usuario"; >>> ArrayList al = new ArrayList(); >>> NpgsqlDataReader dr; >>> try{ >>> >>> NpgsqlConnection conn = new NpgsqlConnection(Util.CONN); >>> conn.Open(); >>> >>> NpgsqlCommand cmd = new NpgsqlCommand(sql,conn); >>> dr = cmd.ExecuteReader(); >>> >>> }catch(Exception e){ >>> Util u = new Util(); >>> u.WinInfo("Error al Cargar la lista de usuarios " + >>> e.Message.ToString(), "Error"); >>> } >>> return dr; >>> } >>> >>> >>> y me lanza este error : >>> >>> Use of unassigned local variable `dr'(CS0165)] >>> >>> y si le quito el try {} catch {} trabaja bien, se supone que try{ } >>> catch{} no restringen el alcanse de variables o si ? >>> >>> _______________________________________________ >>> Mono-hispano mailing list >>> [email protected] >>> https://listas.hispalinux.es/mailman/listinfo/mono-hispano >>> >> >> > _______________________________________________ Mono-hispano mailing list [email protected] https://listas.hispalinux.es/mailman/listinfo/mono-hispano