• No se han encontrado resultados

ACCESO A DATOS DESDE VB.NET

N/A
N/A
Protected

Academic year: 2021

Share "ACCESO A DATOS DESDE VB.NET"

Copied!
8
0
0

Texto completo

(1)

CONEXIÓN VB. NET - SQL SERVER

ACCESO A DATOS DESDE VB .NET

1. INTRODUCION:

Las aplicaciones de acceso a datos, forman casi de forma habitual, parte de una aplicación Windows estándar. Sin lugar a dudas, en muchas ocasiones, nos resultará imprescindible acceder a fuentes de datos. En esta sesión, veremos como acceder a fuentes de datos de forma sencilla, desde nuestro entorno de desarrollo.

Desde Vb Net 2005 se puede acceder a las siguientes bases de datos, utilizando las clases adecuadas. Oracle

SQL Server Access

Las que se puedan acceder a través de ODBC. 2. ADO.NET

Si conoce el desarrollo de aplicaciones con versiones anteriores de Visual Basic a la tecnología .NET, entonces le sonará algunos aspectos entre otros como ADO, DAO.

Visual Basic 2005 por su lado, ha visto de cerca el nacimiento de ADO.NET. Sin embargo, no es recomendable comparar ADO.NET con los anteriores métodos de conexión a fuentes de datos. Nos centraremos en la forma de conectar de Visual Basic 2005 con fuentes de datos a través de ADO.NET 2.0.

ADO.NET es por lo tanto, un conjunto de clases que nos permiten leer e interactuar con fuentes de datos almacenadas en bases de datos y otras fuentes de almacenamiento de datos.

Estas clases de ADO.NET, las encontraremos dentro de System.Data. Entre todas las clases de este nombre de espacio, destacaremos la clase DataView, DataSet y DataTable.

Si usted sabe, conoce o ha trabajado con RecordSet en anteriores versiones de Visual Basic, debe saber que ahora, podremos hacer lo mismo con los objetos DataSet y DataReader.

Pero sobre todo, algo que destaca a ADO.NET sobre otros métodos de acceso, es que nos permite el desarrollo de aplicaciones en n-capas. Todo esto, unido a la posibilidad de trabajar con estándares como documentos XML, nos proporciona una intercomunicación entre entornos y dispositivos que está asegurada.

Aún y así, existe otro detalle a tener en cuenta a la hora de trabajar con fuentes de datos junto a las clases y objetos de la tecnología .NET, y es que podemos trabajar con fuentes de datos conectadas o fuentes de datos desconectadas. La diferencia entre ellas, es la que veremos de forma breve a continuación.

¿Acceso conectado o acceso desconectado?

Cuando trabajamos con fuentes de datos dentro de la tecnología .NET, podemos trabajar con fuentes de datos conectadas o fuentes de datos desconectadas.

La diferencia entre ambos métodos de conexión es clara. Por un lado, el trabajo con fuentes de datos conectadas, requiere que exista un canal de comunicación existente entre la aplicación y la fuente de datos en todo momento. De esta manera, la conectividad con la aplicación, la apertura de la conexión, etc., que es la tarea más pesada en la comunicación de una aplicación con una fuente de datos, permanece abierta mientras se trabaja con la fuente de datos, estemos en un instante dado manipulando datos de la fuente de datos o no. Por decirlo de otra forma, la puerta de acceso la hemos dejado abierta y pasaremos de una habitación a otra y viceversa cuando queramos.

Por otro lado, el trabajo con fuentes de datos desconectadas, requiere que cuando se accede a la base de datos, se recoja no sólo una copia de los datos con los que vamos a trabajar, sino que además se almacene una copia de la estructura de la tabla o tablas que hemos decidido descargar y otros datos relacionados con las tablas. En sí, es una copia exacta o una foto exacta de los datos de la tabla o tablas

(2)

CONEXIÓN VB. NET - SQL SERVER

y de todas las características de la tabla o tablas. Por lo tanto, se abre un canal de comunicación, se recogen los datos para trabajar con ellos y se cierra nuevamente el canal de comunicación. Esos datos se almacenan en memoria, y se trabaja por lo tanto, con los datos de memoria, no con la fuente de datos directamente como en el caso anterior dónde trabajábamos con fuentes de datos conectadas.

La única particularidad a tener en cuenta en este último caso, es que como lógicamente haremos una copia de la estructura, propiedades, características y datos de la tabla o tablas con las que queremos trabajar de forma desconectada, no es muy recomendable por no decir totalmente prohibido, hacer una copia de cualquier tabla, ya que podemos sobrecargar la aplicación y afectar considerablemente en el rendimiento de ésta.

3. LAS CLASES.

Cada base de datos dispone de una clase especializada en el manejo de la misma. Oracle OracleClient

SQL SQLClient Access OleDb

Odbc ODBC

Genérico DB

Y estas clases están disponibles en el espacio de nombres System.Data. Como vamos a centrarnos en SQL, la clase que utilizaremos será SQLClient.

Imports System.Data.SqlClient

4. LOS OBJETOS.

Podemos clasificarlos o agruparlos en Conexión.

Almacenamiento. Visualización. Otros. 3.1. Conexión.

El objeto de conexión en SQL Server es el SqlConnection. Permite definir los datos necesarios para acceder a cada tipo de base de datos.

Otro objeto de conexión, es el DataAdapter. Este objeto permite realizar el acceso a la base de datos para el intercambio de información en los dos sentidos, digamos que gestiona los datos entre la base de datos y la aplicación a partir de los datos facilitados en la conexión.

Pertenece a Imports System.Data.Odbc.OdbcDataAdapter.

Cada objeto de almacenamiento debe tener un objeto DataAdapter asignado, pues es el que a través del cual puede hacerse luego el proceso de actualización.

3.2. Almacenamiento.

Los objetos de almacenamiento son:

(3)

CONEXIÓN VB. NET - SQL SERVER mismo, se cierra la conexión y luego se realiza la actualización de los datos en la base de datos con los cambios que haya habido en el programa.

DataRow System.Data.DataRow

El objeto DataRow, lo hemos incorporado como elemento de almacenamiento, aunque hace referencia a una fila, registro de la base de datos, porque hemos comprobado lo útil que llega a ser el uso del mismo, y al fin y al cabo almacena datos, un registro, pero datos.

3.3. Visualización.

Los objetos de visualización puede ser cualquiera de los que tenemos disponibles en el entorno de programación.

Lo importante aquí es como utilizarlos a la hora de visualizar los datos de nuestra fuente de almacenamiento.

Podríamos hablar de dos posibilidades.

Asignación clásica de los datos, o enlazarlos a nuestra fuente de datos. Las dos son válidas evidentemente, pero hay que ver la practicidad.

El enlazado de un DataDrid a nuestro DataTable es comodísimo, pues se encarga de representar los datos que vamos incluyendo en la tabla, sea la origen o una virtual.

El enlazado de un TextBox a un objeto crea el mismo código que hacer una asignación manual o clásica.

La clase DataView, por otro lado, nos permite crear múltiples vistas de nuestros datos para presentar los datos de su correspondiente DataTable posteriormente. Adicionalmente a esto, también podemos ordenar y filtrar los datos, buscar y navegar un conjunto de datos dado, etc.

4.4. Otros.

Estos objetos pueden ser: BindingSource

CommandBuilder Command

BindingSource, este objeto es el que hace de puente entre aquellos objetos que no disponen de la propiedad DataSource y el objeto fuente de los datos.

CommandBuilder, genera de forma automática código SQL para las opciones Insert, Update y

Delete, tanto para el uso normal, como para cuando se utiliza el DataAdapter en el entorno de un DataSet.

Command, sirve para indicar, almacenar y ejecutar cuando proceda, la instrucción SQl, sea almacenada o incrustada, para un objeto DataReader o DataAdapter.

Tiene dos formatos de utilización,

ExecuteNonQuery se ejecuta y no devuelve datos, borrado por ejemplo.

(4)

CONEXIÓN VB. NET - SQL SERVER Crear un nuevo proyecto:

Y lo guardamos en una carpeta de trabajo:

(5)

CONEXIÓN VB. NET - SQL SERVER Diseñar el siguiente Menú Principal, recuerde que el formulario debe de ser un contenedor MDI.

Opciones del Menú Mantenimiento.

(6)

CONEXIÓN VB. NET - SQL SERVER

DISEÑO DE INTERFAZ PROPUESTA

Formulario que permitirá el mantenimiento de la tabla Alumno.

txtCodigo

Nombre: cboSexo

Items:

- Masculino

- Femenino

btnPrimero btnAnterior btnSiguiente btnUltimo btnBuscar

txtApellidos

txtNombres

dtFecha Format: short

txtDireccion

txtEmail

btnNuevo btnEditar btnGuardar btnDeshacer btnEliminar

(7)

CONEXIÓN VB. NET - SQL SERVER

CÓDIGO PARA CONECTAR EL FORMULARIO A LA TABLA ALUMNO 'importamos el SqlClient

Imports System.Data.SqlClient

Public Class FrmAlumno

'DECLARAMOS LAS VARIABLES Dim conn As New SqlConnection

Dim objDataAdapter As SqlDataAdapter

Dim objDataSet As DataSet

Public posicion, flag As Integer 'CREAMOS LOS PROCEDMIENTOS

‘ Crear los siguientes Procedimientos Private Sub conexion()

'crear la cadena de conexion

conn.ConnectionString = cadena

'crear el dataAdapter

Me.objDataAdapter = New SqlDataAdapter("SELECT * FROM ALUMNO", conn)

'genera de forma automática código SQL para las opciones Insert, Update y Delete() Dim

comandbuilder As SqlCommandBuilder = New SqlCommandBuilder(objDataAdapter)

'instanciar el dataSet

objDataSet = New DataSet()

'abrir conexion

conn.Open()

'agrega las filas al dataset recuperadas desde la tabla Me.objDataAdapter.Fill(objDataSet, "ALUMNO")

'cierra la conexion

conn.Close()

'indica la posicion actual del registro

posicion = 0

'llamar el procedimiento Me.cargadatos()

End Sub

Private Sub cargadatos()

'obtener un objeto con la fila actual Dim fila As DataRow 'obtener fila actual 'obtener la fila actual

fila = Me.objDataSet.Tables("ALUMNO").Rows(Me.posicion) 'PASAR CONTENIDO A LOS CAMPOS

Me.txtCodigo.Text = fila("alu_codi")

Me.TxtApellidos.Text = fila("alu_apel")

Me.TxtNombres.Text = fila("alu_nomb")

Me.cboSexo.Text = fila("alu_sexo")

Me.txtDireccion.Text = fila("alu_dire")

Me.txtEmail.Text = fila("alu_mail")

Me.dtfecha.Value = fila("alu_fnac")

'conectar el dataGridView con la tabla

Me.DtgAlumno.DataSource = objDataSet.Tables(0)

'SELECCIONAR TODA LA FILA del dataGridView With

dtgAlumno

.MultiSelect = False

.SelectionMode = DataGridViewSelectionMode.FullRowSelect

End With

'Asignar el estilo del DatagridView

Me.dtgAlumno.Font = _

New Drawing.Font("Tahoma", 8, FontStyle.Regular, GraphicsUnit.Point)

'RELACIONAR REGISTRO CON DATAGRIDVIEW

dtgAlumno.Rows(posicion).Selected = True

dtgAlumno.Rows(posicion).Cells(0).Selected = True

'Cambiando de Nombre a los encabezados de las columnas

dtgAlumno.Columns("alu_codi").HeaderText = "Código" dtgAlumno.Columns("alu_apel").HeaderText = "Apellidos" dtgAlumno.Columns("alu_nomb").HeaderText = "Nombres" dtgAlumno.Columns("alu_sexo").HeaderText = "Sexo" dtgAlumno.Columns("alu_dire").HeaderText = "Dirección" dtgAlumno.Columns("alu_fnac").HeaderText = "Fecha Nac"

dtgAlumno.Columns("alu_mail").HeaderText = "Correo Electronico" 'estableciendo el ancho de las columnas

dtgAlumno.Columns("alu_codi").Width = 40 dtgAlumno.Columns("alu_apel").Width = 80

(8)

CONEXIÓN VB. NET - SQL SERVER

dtgAlumno.Columns("alu_nomb").Width = 80 dtgAlumno.Columns("alu_sexo").Width = 30 dtgAlumno.Columns("alu_dire").Width = 80 dtgAlumno.Columns("alu_fnac").Width = 40 dtgAlumno.Columns("alu_mail").Width = 80 End Sub

‘llamamos al procedimiento conexion()desde el evento Load del Formulario

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

conexion()

End Sub

CODIGO PARA LOS BOTONES DE DESPLAZAMIENTO

Private Sub btnPrimero_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles

btnPrimero.Click

Me.posicion = 0

Me.cargadatos()

End Sub

Private Sub btnAnterior_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles

btnAnterior.Click

'si estamos en el ultimo registro no hacer movimiento If Me.posicion = 0 Then

MessageBox.Show("Primer Registro")

Else

'incrementar el marcador de registro y actualizar los controladores con lños datos del registro actual

Me.posicion -= 1

Me.cargadatos() End If End Sub

Private Sub btnSiguiente_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles

btnSiguiente.Click

'si estamos en el ultimo registro no hacer movimiento

If Me.posicion = (Me.objDataSet.Tables("ALUMNO").Rows.Count - 1) Then

MessageBox.Show("Ultimo Registro")

Else

'incrementar el marcador de registro y actualizar los controladores con los datos del registro actual

Me.posicion += 1

Me.cargadatos() End If End Sub

Private Sub btnUltimo_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles

btnUltimo.Click

Me.posicion = (Me.objDataSet.Tables("ALUMNO").Rows.Count - 1)

Me.cargadatos()

Referencias

Documento similar

Tras establecer un programa de trabajo (en el que se fijaban pre- visiones para las reuniones que se pretendían celebrar los posteriores 10 de julio —actual papel de los

Asegurar una calidad mínima en los datos es una de las tareas más difíciles de conseguir para los organismos públicos cuyo objetivo es publicar datos lo más rápidamente posible

b) El Tribunal Constitucional se encuadra dentro de una organiza- ción jurídico constitucional que asume la supremacía de los dere- chos fundamentales y que reconoce la separación

En este Ministerio actualmente toda la información se maneja de forma manual, por lo que el objetivo de este trabajo se basa esencialmente en el estudio de las

A través de las transformaciones XSL es que se crean las plantillas del lenguaje para el que se decide generar el acceso a datos, de esta manera al cargar

 Para recibir todos los números de referencia en un solo correo electrónico, es necesario que las solicitudes estén cumplimentadas y sean todos los datos válidos, incluido el

En el caso de realizar una análisis estructural dinámico lineal de un edificio en particular, se necesita disponer de la información correspondiente a las dimensiones en planta y

c CAPITULO II LOS DATOS DE LA ANTROPOLOGIA CRIMINAL Estos datos precisamente determinaron el movimiento moderno en la ciencia criminal y de ellos tomó el nombre la nueva escuela,