none
Como devolver los datos de un odbcDataReader RRS feed

  • Pregunta

  • Holaa todos!!

    Queria comentaros un problema que tengo, a ver que alternativas pudo utilizar, tengo un servicio WCF que basicamente hace consultas a una base de datos, a la cual me conecto a traves de una conexion Odbc, el cliente simplemente me manda el SELECT que quiere hacer y el servicio se conecta a la BBDD, hace la consulta y devuelve los datos.

    El cliente por su parte los muestra en un DataGrid, como en un primer lugar mi cliente era WPF, converti mi OdbcDataReader en un DataSet, el servicio devuelve ese DataSet y en el cliente lo establecia como ItemsSource del DataGrid. Todo funciona bien y el cliente me muestra los datos sin problemas.

    Esta es la funcion que tengo en el servicio:

    public DataSet DataSetQuery(string query)
    {
      DataSet ds = new DataSet();
      try
      {
          String myConnString = SQLDriver.GetADOConnectionString("Realtime");
          OdbcConnection DbConnection = new OdbcConnection(myConnString);
          DbConnection.Open();
          OdbcCommand commandDB = DbConnection.CreateCommand();
          commandDB.CommandText = query;
          OdbcDataReader DbReader = commandDB.ExecuteReader();
          DataTable table = new DataTable();
          table.Load(DbReader);
          ds.Tables.Add(table);                 
          DbReader.Close();
          DbConnection.Close();
       }
       catch (Exception e)
       { }
       return ds;
    }

    Una vez hecha la consulta, cargo los resultados en una DataTable que añado a un DataSet y lo devuelvo al cliente.

    Ahora viene mi problema, intento hacer un cliente Silverligth y me doy cuenta de que en Silverlight no puedo usar DataSet, sino que tendria que convertir los resultados a una coleccion para despues poder ponerlo como ItemsSource del DataGrid, ¿esto es correcto?

    El problema es que las consultas son genericas, es decir yo no se cuantas columnas me van a pedri, por lo que no puedo crear una clase que represente a una fila y despues agruparlas todas en una coleccion.

    Tambien he pensado en recorrer el DataReader y crear una matriz con los valores, o una lista de listas, pero no se si al poner eso directamente me los va a formatear bien en el DataGrid.

    Espero que alguien me pueda ayudar, porque ando un poco perdida.

    Gracias de antemano!!

    jueves, 24 de enero de 2013 8:20

Respuestas