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.
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.
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
Autor:
Richard
Página anterior | Volver al principio del trabajo | Página siguiente |