• Domingo 22 de Diciembre de 2024, 13:41

Autor Tema:  Valores Arraylist  (Leído 2587 veces)

insomnio

  • Miembro activo
  • **
  • Mensajes: 27
    • Ver Perfil
Valores Arraylist
« en: Jueves 25 de Agosto de 2005, 09:46 »
0
Buenas,
Tengo una funcion de busqueda, la cual me devuelve un arraylist de una clase con todas sus propiedades, pues bien lo de insertar en el arraylist ningun problema, el problema esta en cuando tengo que devolver el valor, ya que solo me devuelve los valores de la última posicion.

Me explico la funcion lo que hace es un select con un where es decir mete todos los valores que coinciden de la tabla en el arraylist mediante las propiedades de la clase que tb se llama igual que la tabla y tiene los mismos atributos, y luego cuando quiero mostrarlos hago en el main:

ArrayList aObj=new ArrayList();
String s=null;


for(i=0;i<aObj.Count;i++)
{
s=((Usuario)aObj).PrDniUsuario;
}


Dond PrDniUsuario es una funcion de la clase usuario que tiene juntos los metodos get y set, y si por ejemplo la funcion de busqueda me inserta los dni's
11111111-S y 22222222-T durante la iteracion del bucle for la vble 's' solo coge el valor de :22222222-T alguien sabe pq y como se soluciona?¿
ya que la propiedad Count del arraylist es 2 o sea las dos clases completas que tenia q insertarme
GRACIAS

Diodo

  • Moderador
  • ******
  • Mensajes: 658
    • Ver Perfil
    • http://www.solocodigo.com
Re: Valores Arraylist
« Respuesta #1 en: Jueves 25 de Agosto de 2005, 10:07 »
0
Hola

Bueno, tal como esta asi el codigo, es nomal que en el string s se te quede el ultimo DNI,ya que s va cogiendo los diferentes valores de DNI sobreescribiendolos uno encima del otro hasta que llegas al ultimo que sera el que quede en la variable.Es decir la variable string s almacena un unico DNI
No se en que parte del codigo muestras los valores de DNI por pantalla, lo mas facil seria hacerlo en el mismo bucle
O si quieres meterlos en un array de strings y luego recorrer ese array para mostrarlos
Hay mil formas de hacerlo.

salu2  :hola:

insomnio

  • Miembro activo
  • **
  • Mensajes: 27
    • Ver Perfil
Re: Valores Arraylist
« Respuesta #2 en: Jueves 25 de Agosto de 2005, 10:38 »
0
Cita de: "Diodo"
Hola

Bueno, tal como esta asi el codigo, es nomal que en el string s se te quede el ultimo DNI,ya que s va cogiendo los diferentes valores de DNI sobreescribiendolos uno encima del otro hasta que llegas al ultimo que sera el que quede en la variable.Es decir la variable string s almacena un unico DNI
No se en que parte del codigo muestras los valores de DNI por pantalla, lo mas facil seria hacerlo en el mismo bucle
O si quieres meterlos en un array de strings y luego recorrer ese array para mostrarlos
Hay mil formas de hacerlo.

salu2  :hola:
Buenas Diodo,

Pues yo creo que no ya que si te fijas itero con la vlbe 'i', por lo que el primer valor tendria que ser:

s=((Usuario)aObj).PrDniUsuario; donde la 'i' es 0 por lo que el valor de aObj).PrDniUsuario en este caso seria 11111111-S y no 22222222-T piensa que lo he hecho paso a paso y siempre me coge el valor ese, la funcion de inserccion es esta:

public virtual ArrayList Search(String where)
{
ArrayList aObj=new ArrayList();
Usuario objUsuario=new Usuario();
sqlcmd= new SqlCommand();
sqlcon= new SqlConnection ("Integrated Security=SSPI;Persist Security Info=False;Initial Catalog=Telematica;Data Source=localhost");
sqlcmd.CommandText = "SELECT * FROM Usuarios WHERE "+where+" ";
sqlcon.Open();
sqlcmd.Connection= sqlcon;
sqlread=sqlcmd.ExecuteReader();
   
while (sqlread.Read())
{
objUsuario.PrDniUsuario=sqlread.GetString(0);
objUsuario.PrPerfil=sqlread.GetString(1);
objUsuario.PrPassword=sqlread.GetString(2);
aObj.Add(objUsuario);
}//while
                  
sqlcon.Close();
               
return aObj;
}//funcion

Por lo que primero hago una busqueda y luego el resultado lo meto en un arraylist, exactamente ocupo dos posiciones, y luego en le main hago esto:

ArrayList aObj=new ArrayList();
String s=null;


for(i=0;i<aObj.Count;i++)
{
s=((Usuario)aObj).PrDniUsuario;
}

Pero tengo un punto de parada en el for, y claro en la primerea iteracion la 'i' vale 0 por lo que tendria que mostrarme el dni de la primera posicion del arraylist no?¿, no lo imprimo por pantalla este bucle solo es para comprovar que tengo los valores bien insertados, sino como seria?¿

Y es mas en el main tb he probado esto:

ArrayList m1=new ArrayList();
         
         
   
m1=u.Search("Password='holita'");//llamo a la funcion buscando los usuarios donde password es holita, y me devuelve que hay dos ya que m1.Count tiene como valor 2
String s=null;
String s1=null;
s=((Usuario)m1[0]).PrDniUsuario;
s1=((Usuario)m1[1]).PrDniUsuario;

MUCHAS GRACIAS

Diodo

  • Moderador
  • ******
  • Mensajes: 658
    • Ver Perfil
    • http://www.solocodigo.com
Re: Valores Arraylist
« Respuesta #3 en: Jueves 25 de Agosto de 2005, 11:04 »
0
Una pregunta:

¿En cada iteracion del bucle for muestras el DNI correpondiente a la iteracion? , ¿o simplemente lo recorres para meter todos los DNIs en la variable s?

Por que con este codigo lo unico que haces es una asignacion a s en cada iteracion ¿no?

Código: Text
  1.  
  2. for(i=0;i&#60;aObj.Count;i++)
  3. {
  4. s=((Usuario)aObj[i]).PrDniUsuario;
  5. }
  6.  
  7.  

Quizas este metiendo la pata pq de C# tengo poca idea, pero por el parecido con c++ me parece que podria ser eso lo que pasa, no se .......

insomnio

  • Miembro activo
  • **
  • Mensajes: 27
    • Ver Perfil
Re: Valores Arraylist
« Respuesta #4 en: Jueves 25 de Agosto de 2005, 11:43 »
0
Pues si, con ese codigo en teoria solo hago asignar en cada iteracion el valor del Dni que tiene asignado el arraylist en la posicion 0,1,...n

Y claro en la funcion anterior lo que hago es leer de la BD cargarlo en la vlb objUsuario que es una isntancia de la clase Usuario y la guardo con todas sus propiedades en la posicion '0' del arraylist

insomnio

  • Miembro activo
  • **
  • Mensajes: 27
    • Ver Perfil
Re: Valores Arraylist
« Respuesta #5 en: Jueves 25 de Agosto de 2005, 13:39 »
0
Gracias Diodo ya lo he solucionado era un tonteria, si te interesa pues te lo digo, de nuevo gracias

Diodo

  • Moderador
  • ******
  • Mensajes: 658
    • Ver Perfil
    • http://www.solocodigo.com
Re: Valores Arraylist
« Respuesta #6 en: Jueves 25 de Agosto de 2005, 16:12 »
0
No hay de que, enhorabuena a ti por sacarlo tu solo
Claro publicalo que a lo mejor le sirve a alguien de ayuda

salu2  :hola:

insomnio

  • Miembro activo
  • **
  • Mensajes: 27
    • Ver Perfil
Re: Valores Arraylist
« Respuesta #7 en: Viernes 26 de Agosto de 2005, 09:04 »
0
Pues era un chorrada tio,

Si te acuerdas tenia en la funcion:

public virtual ArrayList Search(String where)
{
ArrayList aObj=new ArrayList();
Usuario objUsuario=new Usuario();//Aqui el problema

De esta forma solo creaba una instancia de la clase Usuario por lo que siempre iria machando el resultado, la solucion fue ponerla dentro del bucle, es decir:

while (sqlread.Read())
{
Usuario objUsuario=new Usuario();//Aqui va
objUsuario.PrDniUsuario=sqlread.GetString(0);
objUsuario.PrPerfil=sqlread.GetString(1);
objUsuario.PrPassword=sqlread.GetString(2);
aObj.Add(objUsuario);


Asi por cada iteracion creamos una nueva instancia  de la clase

Saludos