Descargar

Acceso a datos con ADO .NET (página 2)

Enviado por richard


Partes: 1, 2

Como se puede comprobar la tabla que se ha almacenado en el objeto DataSet la hemos llamado Empleados. Para acceder a dicha tabla no tenemos nada más que hacer la referencia correspondiente a través de la colección Tables del objeto DataSet. Para almacenar la tabla dentro del objeto DataSet hemos tenido que hacer uso de un objeto de la clase SqlDataAdapter, que cumple la función de puente o comunicación entre el almacén de datos y el objeto DataSet.

edu.red

Los objetos DataAdapter

Como ya hemos comentado, los objetos DataAdapter (SqlDataAdapter y OleDbDataAdapter) van a hacer la función de puente entre el almacén de los datos y el DataSet, nos van a permitir cargar el DataSet desde el origen de los datos y después nos va a permitir actualizar los datos en el origen de datos con los del DataSet.

En el ejemplo anterior hemos utilizado el objeto DataAdapter de una forma muy sencilla, este contenia una sentencia SQL (1 objeto Command), pero también pueden contener varios objetos Command.

El objeto DataAdapter va a poseer cuatro propiedades que nos van a permitir asignar una serie de objetos

Command que van a realizar una operación determinada con los datos, estas propiedades son las siguientes:

SelectCommand: objeto de la clase Command que se va a utilizar para ejecutar una sentencia Select de

SQL(Predeterminado).

InsertCommand: objeto de la clase Command (SqlCommand o OleDbCommand), que se va a utilizar para agregar un nuevo registro.

UpdateCommand: objeto de la clase Command que se va a utilizar para realizar una modificación de los datos.

DeleteCommand: objeto de la clase Command que se va a utilizar para realizar una eliminacion de registros.

Un método destacable de las clases SqlDataAdapter/OleDbDataAdapter es el método Fill(), que ejecuta el comando de selección que se encuentra asociado a la propiedad SelectCommand, los datos obtenidos del origen de datos se cargarán en el objeto DataSet que pasamos por parámetro.

En la Figura 4 se puede ver la relación entre los objetos DataAdapter y el objeto DataSet.

edu.red

Figura 4

Ahora crearemos un ejemplo de uso para el objeto SqlDataAdapter, el cual va a contener dos objetos SqlCommand, uno que permite la inserción, que se asignará a la propiedad InsertCommand del objeto SqlDataAdapter, y otro que permite realizar una sentencia de selección sobre la tabla de la base de datos y cargar el objeto DataSet con los mismos, este objeto SqlCommand se asignará a la propiedad SelectCommand. Como ya hemos dicho anteriormente, al ejecutar el método Fill() del objeto SqlDataAdapter se ejecutará el comando de la propiedad SelectCommand.

Imports System.Data.SqlClient

Public Class VBNetDataset2

Inherits System.Windows.Forms.Form

Dim conexion As SqlConnection

Dim adaptador As SqlDataAdapter

Dim cmdInsercion, cmdSeleccion As SqlCommand

Dim sqlInsercion As String = _

"INSERT into TablaEmpleados (Codigo, Nombres, DNI) VALUES(@codigo,@nombres,@dni)" Dim sqlSeleccion As String = _

"select Codigo, Nombres, DNI From TablaEmpleados"

Dim dst As DataSet

Private Sub VBNetDataset2_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

conexion = New SqlConnection("server=(local);database=northwind;uid=sa;pwd=")

adaptador = New SqlDataAdapter

cmdInsercion = New SqlCommand(sqlInsercion, conexion)

cmdSeleccion = New SqlCommand(sqlSeleccion, conexion)

adaptador.InsertCommand = cmdInsercion adaptador.SelectCommand = cmdSeleccion dst = New DataSet

MuestraDatos() End Sub

Sub MuestraDatos() Try

conexion.Open()

dst.Tables.Clear()

adaptador.Fill(dst, "Empleados")

DataGrid1.DataSource = dst.Tables("Empleados").DefaultView lblres.Text = String.Format("Hay {0} Registros en la Tabla",

dst.Tables("Empleados").DefaultView.Count)

Catch ex As SqlException

MsgBox("se ha producido una excepción: " + ex.Message, 16, Me.Text)

Finally conexion.Close()

End Try

End Sub

Private Sub btnsalir_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) _ Handles btnsalir.Click

Me.Close()

End Sub

Private Sub btnnuevo_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnnuevo.Click

Limpiar_Textos(Me)

End Sub

Private Sub btnagregar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnagregar.Click

Dim res As Int16

Try conexion.Open()

adaptador.InsertCommand.Parameters.Add("@nombres", txtnombres.Text)

adaptador.InsertCommand.Parameters.Add( _

New SqlParameter("@codigo", SqlDbType.Char, 5))

adaptador.InsertCommand.Parameters("@codigo").Value = txtcodigo.Text adaptador.InsertCommand.Parameters.Add("@dni", txtdni.Text)

res = adaptador.InsertCommand.ExecuteNonQuery()

MsgBox("Se ha añadido " + res.ToString + " registro", 64, Me.Text)

Catch ex As SqlException

MsgBox("se ha producido una excepción: " + ex.Message, 16, Me.Text) Finally

conexion.Close() End Try

MuestraDatos() End Sub

Protected Overrides Sub Finalize() conexion.Dispose() adaptador.Dispose() dst.Dispose() MyBase.Finalize()

End Sub

End Class

En un Modulo Estandar agregar lo siguiente:

Module Module1

Function Solo_Letras(ByVal Tecla As Integer) As Boolean

Solo_Letras = True

Select Case Tecla

Case 8, 32, 65 To 90, 97 To 122

Case Else

Solo_Letras = False

End Select

End Function

Function Solo_Numeros(ByVal Tecla As Integer) As Boolean

Solo_Numeros = True

Select Case Tecla

Case 8, 48 To 57

Case Else

Solo_Numeros = False

End Select

End Function

Sub Limpiar_Textos(ByVal Frm As Form) Dim ctl As Control

For Each ctl In Frm.Controls

If TypeOf ctl Is TextBox Then ctl.Text = "" Next

End Sub

Sub Validar_Textos(ByVal Frm As Form) Dim ctl As Control

For Each ctl In Frm.Controls

If TypeOf ctl Is TextBox Then

If ctl.Text = "" Then

MsgBox("El campo " & ctl.Name & " No puede estar en blanco", 16, "Error")

ctl.Focus() End If

End If

Next

End Sub

Function Valida_Textos(ByVal Frm As Form) As Boolean

Dim ctl As Control

Valida_Textos = True

For Each ctl In Frm.Controls

If TypeOf ctl Is TextBox Then

If ctl.Text = "" Then

Valida_Textos = False

MsgBox("El campo " & ctl.Name & " No puede estar en blanco", 16, "Error")

ctl.Focus() End If

End If

Next

End Function

End Module

En Ia Figura 5 se puede apreciar Ia ejecuci6n de este ejemplo del objeto SqiD

edu.red

 

 

Autor:

Richard

Partes: 1, 2
 Página anterior Volver al principio del trabajoPágina siguiente