• Viernes 1 de Noviembre de 2024, 15:32

Autor Tema:  DataReader y ENTEROS  (Leído 1456 veces)

Diabolo19

  • Nuevo Miembro
  • *
  • Mensajes: 10
    • Ver Perfil
DataReader y ENTEROS
« en: Lunes 14 de Julio de 2008, 12:55 »
0
Hola y gracias de antemano.
Quiero leer todas las tuplas de una tabla e ir guardando uno de los campos en un fichero de texto.
Esto es lo que hago:

            string iniciativa = "D:\output\iniciativa.xml";
            StreamWriter writer = File.CreateText(iniciativa);

            // Configuración de las conexiones y consultas necesarias.
            string connectionString = ConfigurationManager.ConnectionStrings["LeyesConnectionString"].ConnectionString;
            SqlConnection SqlConn = new SqlConnection(connectionString);
            string queryInciativa = "SELECT PreEpigrafe, TextoEpigrafe, Parrafo, Texto FROM EstructuraLey";

            SqlCommand comIniciativa = new SqlCommand(queryInciativa, SqlConn);

            int PreEpigrafe = 1;
            int TextoEpigrafe = 1;
            int Parrafo = 1;

            SqlConn.Open();
                SqlDataReader drInicativa = comIniciativa.ExecuteReader();
                while (drInicativa.Read())
                {
       //AQUÍ ME DA ERROR. ME DICE:
Error    1    No se puede convertir implícitamente el tipo 'object' en 'int'. Ya existe una conversión explícita (compruebe si le falta una conversión).
       // Decir, que tanto la primera, segunda y tercera columna son de tipo ENTERO.

                    int temp1 = drInicativa.GetValue(0);
                    int temp2 = drInicativa.GetValue(1);
                    int temp3 = drInicativa.GetValue(2);

                    if (temp1 == PreEpigrafe){
                        System.IO.StreamWriter sw = new System.IO.StreamWriter(iniciativa, true);
                        sw.WriteLine("<PreEpigrafe>" + drInicativa.GetValue(3) + "</PreEpigrafe>");
                        sw.Close();
                        PreEpigrafe++;
                    }
                    else if (temp2 == TextoEpigrafe)
                    {
                        System.IO.StreamWriter sw1 = new System.IO.StreamWriter(iniciativa, true);
                        sw1.WriteLine("<TextoEpigrafe>" + drInicativa.GetValue(3) + "</TextoEpigrafe>");
                        sw1.Close();

                        if (temp3 == Parrafo)
                        {
                            System.IO.StreamWriter sw2 = new System.IO.StreamWriter(iniciativa, true);
                            sw2.WriteLine("<p>" + drInicativa.GetValue(3) + "</p>");
                            sw2.Close();
                            Parrafo++;
                        }
                    }
                }
            SqlConn.Close();
        }

A ver si alguien puede ayudarme...
GRACIAS.

JaviMarciano

  • Miembro activo
  • **
  • Mensajes: 97
    • Ver Perfil
Re: DataReader y ENTEROS
« Respuesta #1 en: Martes 19 de Agosto de 2008, 00:11 »
0
Probaste con esto?
Código: Text
  1. int temp1 = Convert.ToInt32(drInicativa.GetValue(0));
  2.  
estás seguro que los campos son te tipo entero?

ProfesorX

  • Moderador
  • ******
  • Mensajes: 796
  • Nacionalidad: mx
    • Ver Perfil
Re: DataReader y ENTEROS
« Respuesta #2 en: Martes 19 de Agosto de 2008, 03:53 »
0
Recuarda utilizar [ code][ /code], mejora la legibilidad del codigo.

Podrias hacer un casting:

Código: Text
  1.  
  2. int temp1 = (int) drInicativa.GetValue(0);
  3. int temp2 = (int) drInicativa.GetValue(1);
  4. int temp3 = (int) drInicativa.GetValue(2);
  5.  
  6.  

NOTA:
==================================================================
Este foro es para ayudar, aprender, compartir... usenlo para eso,
NO SE RESUELVEN DUDAS POR MENSAJE PRIVADO Y MENOS POR CORREO
==================================================================

Diabolo19

  • Nuevo Miembro
  • *
  • Mensajes: 10
    • Ver Perfil
Re: DataReader y ENTEROS
« Respuesta #3 en: Martes 19 de Agosto de 2008, 07:50 »
0
Gracias ProfesorX. Te he hecho caso y ha funcionado.
GRACIAS de nuevo...