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 |