none
Llenar datatable usando command RRS feed

  • Pregunta

  • Buen día.

    Antes que nada solo avisarles que tengo dos dudas sobre la misma función y están detalladas abajo, si hay algún problema puedo formular otra pregunta en el foro a fin de evitarles inconvenientes 

    tengo una función buscar en una clase creada en mi proyecto, esta clase la invoco desde mi formulario buscar, la función recibe el id de un empleado y me regresa un datatable con la información acerca de este.

    mi logica para obtener el datatble es esta: 

    1. utilizo un command

    2. utilizo un SQLDataAdapter para ejecutar el command

    3. utilizo Fill del SQLDataAdapter para llenar el datatable.

    hay alguna manera de no utilizar el SQLDataAdapter para llenar el Datatable, osea, utilizar el command para llenar el Datatable?

    dejo la función que utilizo:

    Public Function buscar(ByVal id As IntegerAs DataTable

            Dim dt As New DataTable

            Try

                Using sql As New SqlConnection(conex)

                    sql.Open()

                    Using cmd As New SqlCommand

                        With cmd

                            .Connection = sql

                            .CommandType = CommandType.Text

                            .CommandText = "select * from empleado where id=@id "

                            .Parameters.AddWithValue("@id", id)

                        End With

                        Using da = New SqlDataAdapter(cmd)

                            da.Fill(dt)

                        End Using

                    End Using

                End Using

            Catch ex As SqlException

                MessageBox.Show(ex.Message)

            End Try

            Return dt

        End Function

    otra duda, como podría utilizar el datarow en mi función para no enviar un datatable sino un datarow, trate de utilizarlo pero me marcaba un error en que no era accesible el datarow porque es 'Protected Friend', les dejo el codigo talvez puedan ayudarme:

    Public Function buscar(ByVal id As IntegerAs DataRow

            sql = New SqlConnection

            sql.ConnectionString =ConfigurationManager.ConnectionStrings("cnn").ConnectionString

            sql.Open()

            Using cmd = New SqlCommand

                With cmd

                    .Connection = sql

                    .CommandType = CommandType.Text

                    .CommandText = "select * from empleado where id=@id"

                    .Parameters.AddWithValue("@id", id)

                End With

                Using da = New SqlDataAdapter(cmd)

                    aux = New DataRow

                    da.Fill(aux)

                End Using

                Return aux

            End Using

        End Function

    Gracias por la ayuda.



    pabletoreto

    • Cambiado Enrique M. Montejo jueves, 3 de enero de 2013 17:36 acceso a datos (De:Lenguaje VB.NET)
    jueves, 30 de agosto de 2012 15:13

Todas las respuestas

  • hay alguna manera de no utilizar el SQLDataAdapter para llenar el Datatable, osea, utilizar el command para llenar el Datatable?

    me temo que no

    pero podrias si dejar de usar datatable y pasar a definir entidades con clases

    [WinForms] Edición Empleados

    analiza la capa de datos del ejemplo como crea las entidade sy usa el datareader

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina

    jueves, 30 de agosto de 2012 15:27
  • hay alguna manera de no utilizar el SQLDataAdapter para llenar el Datatable, osea, utilizar el command para llenar el Datatable?

    me temo que no

    pero podrias si dejar de usar datatable y pasar a definir entidades con clases

    [WinForms] Edición Empleados

    analiza la capa de datos del ejemplo como crea las entidade sy usa el datareader

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina

    Gracias, lo que me muestras es en tres capas verdad? 

    y otra cosa, tendrás alguna observación sobre el código y mi pregunta del datarow?


    pabletoreto

    jueves, 30 de agosto de 2012 15:35