DataReader

02/10/2004 - 01:37 por Ramon Zarza | Informe spam
Colegas

Como obtengo el valor de un objeto cargado con el DataReader??

Esto es lo que hago. Leo la columna (0) peor no la (1)

hay alguan forma de hacerlo??

************************
miConexion.Open();
miReader= miComando.ExecuteReader();

// Recorro la tabla y alimento mi lista de opciones

while (miReader.Read())
{
ListItem nuevoItem = new ListItem();

nuevoItem.Text = (string)miReader.GetValue(0); // columna
<CategoriaDocumento>
nuevoItem.Value = (string)miReader.GetValue(0); // columna
<idCategoriaDocumento>
// -- Este ultimo es un id por lo que debe ser INT me da error al
colocar (1)
// hay alguna forma de referencia el nombre de los campos obtenidos??

TipoRegistro.Items.Add(nuevoItem);

}
miReader.Close();
miConexion.Close();
**********************************

Gracias a todos

Preguntas similare

Leer las respuestas

#1 Santi
02/10/2004 - 10:22 | Informe spam
Hola Ramón, probablemente te de el error por hacer:

(string)miReader.GetValue(1); si el valor que contiene es un int lo que
tienes que hacer es:

miReader.GetValue(1).ToString();
o
((int)miReader.GetValue(1)).ToString();


Para referenciar por nombre:

reader["id"]
Respuesta Responder a este mensaje
#2 A.Poblacion
02/10/2004 - 10:24 | Informe spam
// hay alguna forma de referencia el nombre de los campos obtenidos??



valor = (tipo) miReader["NombreDeColumna"];

nuevoItem.Value = (string)miReader.GetValue(0);
// -- Este ultimo es un id por lo que debe ser INT me da error al
colocar (1)



Si es INT tendrás que poner algo parecido a esto:

nuevoItem.Value = ((int)miReader.GetValue(1)).ToString();

O bien, directamente esto:

nuevoItem.Value = miReader.GetValue(1).ToString();


"Ramon Zarza" wrote in message
news:%
Colegas

Como obtengo el valor de un objeto cargado con el DataReader??

Esto es lo que hago. Leo la columna (0) peor no la (1)

hay alguan forma de hacerlo??

************************
miConexion.Open();
miReader= miComando.ExecuteReader();

// Recorro la tabla y alimento mi lista de opciones

while (miReader.Read())
{
ListItem nuevoItem = new ListItem();

nuevoItem.Text = (string)miReader.GetValue(0); // columna
<CategoriaDocumento>
nuevoItem.Value = (string)miReader.GetValue(0); // columna
<idCategoriaDocumento>
// -- Este ultimo es un id por lo que debe ser INT me da error al
colocar (1)
// hay alguna forma de referencia el nombre de los campos obtenidos??

TipoRegistro.Items.Add(nuevoItem);

}
miReader.Close();
miConexion.Close();
**********************************

Gracias a todos



Respuesta Responder a este mensaje
#3 Octavio Hernandez
02/10/2004 - 18:11 | Informe spam
Ramón,

La clase DataReader tiene métodos GetString(), GetInt32(), GetDateTime(),
etc. para utilizarlos en dependencia del tipo del dato que vayas a
recuperar. Son métodos sobrecargados, y puedes pasarle tanto el número como
el nombre de la columna.

En general, yo creo que es preferible utilizar estos métodos en lugar de
GetValue() o la notación equivalente miReader["NombreColumna"]), que
devuelven un object y al final terminas teniendo que hacer castings.

En esta página te advierten de eso y te dan un "mapping" de los tipos debase
de datos a los tipos .NET:

http://msdn.microsoft.com/library/d...atypes.asp

Yo utilizo GetValue() únicamente si voy a escribir alguna utilidad para
abrir alguna tabla cuya estructura desconozco a priori. Pero eso puede que
sea problema de gustos...

Salu2,

Octavio

"Ramon Zarza" escribió en el mensaje
news:%
Colegas

Como obtengo el valor de un objeto cargado con el DataReader??

Esto es lo que hago. Leo la columna (0) peor no la (1)

hay alguan forma de hacerlo??

************************
miConexion.Open();
miReader= miComando.ExecuteReader();

// Recorro la tabla y alimento mi lista de opciones

while (miReader.Read())
{
ListItem nuevoItem = new ListItem();

nuevoItem.Text = (string)miReader.GetValue(0); // columna
<CategoriaDocumento>
nuevoItem.Value = (string)miReader.GetValue(0); // columna
<idCategoriaDocumento>
// -- Este ultimo es un id por lo que debe ser INT me da error al
colocar (1)
// hay alguna forma de referencia el nombre de los campos obtenidos??

TipoRegistro.Items.Add(nuevoItem);

}
miReader.Close();
miConexion.Close();
**********************************

Gracias a todos



Respuesta Responder a este mensaje
#4 Misael Monterroca
03/10/2004 - 02:35 | Informe spam
Solo una pequeña aclaración

El metodo GetXXX no puedes pasarle directamente el nombre de la culumna, si
quieres hacer esto hay que obtener el numero de la culumna con
GetOrdinal("NombreCol") y este asignarlo al GetXXX

GetInt32(GetOrdinal(NombreCol"))


Saludos!
http://www.neo-mx.com/blog


"Octavio Hernandez" escribió en el mensaje
news:
Ramón,

La clase DataReader tiene métodos GetString(), GetInt32(), GetDateTime(),
etc. para utilizarlos en dependencia del tipo del dato que vayas a
recuperar. Son métodos sobrecargados, y puedes pasarle tanto el número
como
el nombre de la columna.

En general, yo creo que es preferible utilizar estos métodos en lugar de
GetValue() o la notación equivalente miReader["NombreColumna"]), que
devuelven un object y al final terminas teniendo que hacer castings.

En esta página te advierten de eso y te dan un "mapping" de los tipos
debase
de datos a los tipos .NET:

http://msdn.microsoft.com/library/d...atypes.asp

Yo utilizo GetValue() únicamente si voy a escribir alguna utilidad para
abrir alguna tabla cuya estructura desconozco a priori. Pero eso puede que
sea problema de gustos...

Salu2,

Octavio

"Ramon Zarza" escribió en el mensaje
news:%
Colegas

Como obtengo el valor de un objeto cargado con el DataReader??

Esto es lo que hago. Leo la columna (0) peor no la (1)

hay alguan forma de hacerlo??

************************
miConexion.Open();
miReader= miComando.ExecuteReader();

// Recorro la tabla y alimento mi lista de opciones

while (miReader.Read())
{
ListItem nuevoItem = new ListItem();

nuevoItem.Text = (string)miReader.GetValue(0); // columna
<CategoriaDocumento>
nuevoItem.Value = (string)miReader.GetValue(0); // columna
<idCategoriaDocumento>
// -- Este ultimo es un id por lo que debe ser INT me da error al
colocar (1)
// hay alguna forma de referencia el nombre de los campos obtenidos??

TipoRegistro.Items.Add(nuevoItem);

}
miReader.Close();
miConexion.Close();
**********************************

Gracias a todos







Respuesta Responder a este mensaje
#5 Octavio Hernandez
03/10/2004 - 12:47 | Informe spam
Misael,

Muchas gracias, tienes razón. Es en los ResultSets de Java donde se puede
hacer ambas cosas indistintamente. A veces le apunto a .NET cosas que he
visto en Java (y viceversa).

La pregunta que me surge ahora es ¿por qué los de MS no han hecho lo mismo,
y te obligan a utilizar el GetOrdinal() explícitamente?

Salu2,

Octavio

"Misael Monterroca" escribió en el mensaje
news:
Solo una pequeña aclaración

El metodo GetXXX no puedes pasarle directamente el nombre de la culumna,


si
quieres hacer esto hay que obtener el numero de la culumna con
GetOrdinal("NombreCol") y este asignarlo al GetXXX

GetInt32(GetOrdinal(NombreCol"))


Saludos!
http://www.neo-mx.com/blog


"Octavio Hernandez" escribió en el mensaje
news:
> Ramón,
>
> La clase DataReader tiene métodos GetString(), GetInt32(),


GetDateTime(),
> etc. para utilizarlos en dependencia del tipo del dato que vayas a
> recuperar. Son métodos sobrecargados, y puedes pasarle tanto el número
> como
> el nombre de la columna.
>
> En general, yo creo que es preferible utilizar estos métodos en lugar de
> GetValue() o la notación equivalente miReader["NombreColumna"]), que
> devuelven un object y al final terminas teniendo que hacer castings.
>
> En esta página te advierten de eso y te dan un "mapping" de los tipos
> debase
> de datos a los tipos .NET:
>
>


http://msdn.microsoft.com/library/d...atypes.asp
>
> Yo utilizo GetValue() únicamente si voy a escribir alguna utilidad para
> abrir alguna tabla cuya estructura desconozco a priori. Pero eso puede


que
> sea problema de gustos...
>
> Salu2,
>
> Octavio
>
> "Ramon Zarza" escribió en el mensaje
> news:%
>> Colegas
>>
>> Como obtengo el valor de un objeto cargado con el DataReader??
>>
>> Esto es lo que hago. Leo la columna (0) peor no la (1)
>>
>> hay alguan forma de hacerlo??
>>
>> ************************
>> miConexion.Open();
>> miReader= miComando.ExecuteReader();
>>
>> // Recorro la tabla y alimento mi lista de opciones
>>
>> while (miReader.Read())
>> {
>> ListItem nuevoItem = new ListItem();
>>
>> nuevoItem.Text = (string)miReader.GetValue(0); // columna
>> <CategoriaDocumento>
>> nuevoItem.Value = (string)miReader.GetValue(0); // columna
>> <idCategoriaDocumento>
>> // -- Este ultimo es un id por lo que debe ser INT me da error


al
>> colocar (1)
>> // hay alguna forma de referencia el nombre de los campos


obtenidos??
>>
>> TipoRegistro.Items.Add(nuevoItem);
>>
>> }
>> miReader.Close();
>> miConexion.Close();
>> **********************************
>>
>> Gracias a todos
>>
>>
>>
>
>


Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente Respuesta Tengo una respuesta
Search Busqueda sugerida