none
Consolidar en la Base de datos un Dataset a partir de la carga de un Datareader RRS feed

  • Pregunta

  • Hola:

        Por diferentes motivos estoy obteniendo datos de diferentes fuentes de informacion mediante un datareader y mi intencion es guardarla toda en una BD sqlserver 2008. Asi que me he decidido por ir leyendo de los diferentes sistema mediante datareaders, cargar la tabla del dataset (tipado) con el metodo Load y consolidarlo en la BD. Para ello creia que solo era necesario las siguientes instrucciones:

        Public Function Graba(ByVal DR As SqlClient.SqlDataReader) 
                DS.Tables("MiTabla").Load(DR, LoadOption.OverwriteChanges)
               pAdaptador.Update(DS, "MiTabla")

    Con esto mi objetivo era cargar la tabla del dataset y consolidar mediante el adaptador. Pero he mi sorpresa que al consultar la BD no aparece ningun resultado.

    Esto se puede hacer?

    Porque la unica alternativa que se me ocurre es recorrer todo el datareader haciendo 

                While DR.Read
                    Dim NuevaFila As DataRow             
                        NuevaFila = DS.Tables("Mitabla").NewRow
                        /*Asigno valores*/
                        DS.Tables("Mitabla").Rows.Add(NuevaFila)
                         Adaptador.Update(DS, "Mitabla")
                End While

    Esto me funciona pero es mucho mas pesado.

    Gracias de antemano


    • Editado ElDeivid miércoles, 20 de febrero de 2013 9:12
    miércoles, 20 de febrero de 2013 9:12

Todas las respuestas

  • Asi que me he decidido por ir leyendo de los diferentes sistema mediante datareaders, cargar la tabla del dataset (tipado) con el metodo Load y consolidarlo en la BD

    pero porque no lo cargas directo? digo si defines un DataAdapter podrias hacer un Fill() directo al dataset tipado, no se necesita de un datareader para despues generar el dataset

    Pero he mi sorpresa que al consultar la BD no aparece ningun resultado.

    la db esta integrada al servicio de sql server ?

    o puedes ver el mdf en el proyecto por emdio del solution explorer ?

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina

    miércoles, 20 de febrero de 2013 12:13
  • No lo he cargado en directo con un Fill, porque se trata de un motor de BD raro y solo he creado la conexion, no un DataAdapter, pero entiendo que se podria probar.

    En eso que comentas de "que si la db esta integrada al servicio de SQL SERVER" no lo entiendo muy bien lo que quieres decir.

    La forma de crear la conexion fue:

    - Definir un origen de datos

    - Definir en el explorador de soluciones el .xsd

    Luego como propiedad de la clase en el Constructor de la clase:

        Private pDsTEMP As New ElDataset (.xsd)
        Private pAdaptadorTEMP As SqlClient.SqlDataAdapter.

    y en el contructor:

    pAdaptadorTEMP = New SqlClient.SqlDataAdapter("SELECT * FROM clientes", Conexion)

                Dim Comando = New SqlClient.SqlCommand("INSERT INTO clientes (nombre,Fecha,Tipo, FechaGrabacion) VALUES " & _
                "(@nombre,@Fecha,@Tipo,GetDate())")
                Comando.Parameters.Add("@nombre", SqlDbType.NCHAR, 18, "NHC")
                Comando.Parameters.Add("@Fecha", SqlDbType.DateTime, 15, "Fecha")
                Comando.Parameters.Add("@Tipo", SqlDbType.NChar, 10, "Tipo")
                Me.pAdaptadorTEMP .InsertCommand = Comando
                Me.pAdaptadorTEMP .InsertCommand.Connection =conexion

    Asi es como lo he hecho

    miércoles, 20 de febrero de 2013 14:18