Está en la página 1de 31

UNIVERSIDAD ESTATAL

PENINSULA DE SANTA ELENA

PROGRAMACIÓN VISUAL

CONECTIVIDAD CON BASE DE DATOS

Ing. Jaime Orozco, Mgti


Problemática
Necesidad
Métodos de conexión con Base de Datos
Las tecnologías que se emplean para la conectividad entre los datos y la
aplicación, se ha convertido en un factor muy importante a la hora de
desarrollar un proyecto

ADO.NET
Muchas de las aplicaciones, distribuidas o no, trabajan sobre base de datos,
por esta razón Microsoft decidió crear una tecnología de acceso a datos
potente y fácil de utilizar ADO.NET

ADO.net No depende de conexiones continuamente activas, esto es, se


diseñó en torno a una nueva arquitectura donde las aplicaciones se
conectan a la base de datos sólo durante el tiempo necesario para extraer o
actualizar los datos. De esta forma, la base de datos no contiene conexiones
que la mayor parte del tiempo pasan inactivas, lo que se traduce en dar
servicio a muchos más usuarios y facilita la escalabilidad.(Ceballos, 2010)
ARQUITECTURA ADO.NET

Arquitectura ADO.Net(Microsoft, n.d.)


Comandos de interacción con base de datos
Objetos ADO.NET
• Las clases de ADO.NET están definidas en el espacio de nombres
System.Data.
• Trabaja en modo desconectado: El programa no requiere una conexión
persistente con la BD.
• La conexión se abre y se cierra cuando se necesita.
Objetos del proveedor

Según (FOXALL, 2013),Todos los objetos llevan el prefijo único del proveedor:
SqlXXXXX, OleDbXXXX, MySqlXXXX, NpgsqlXXXX, OracleXXXX….etc:

• Connection. Establece la conexión con el origen de datos.

SqlConnection, OdbcConnection, MySqlConnection, NpgsqlConnection …

• Command. Recupera datos del proveedor.


(SELECT * FROM…).
Ej: SqlCommand, OdbcCommand, MySqlCommand, NpgsqlCommand …
• CommandBuilder. Permite hacer consultas SQL para modificar datos de
objetos basados en una sola tabla.

Ej: SqlCommandBuilder, OdbcCommandBuilder,…

• DataReader. Permite recuperar datos de sólo lectura y sólo hacia delante


de un origen de datos.

Ej: SqlDataReader, OdbcDataReader, …

• DataAdapter. Representa un conjunto de comandos SQL y una conexión al


origen de datos para rellenar el objeto

DataSet y actualizar los datos. Ej: SqlDataAdapter,…


La clase Command

• Una vez que hemos establecido la conexión con el SGBD, la siguiente


operación que normalmente querremos llevar a cabo será la de enviarle
sentencias para realizar diferentes operaciones con los datos. Las clases
Command de ADO.NET son las que nos permitirán llevar a cabo tales
operaciones.

• Un objeto Command nos va a permitir ejecutar una sentencia SQL sobre la


fuente de datos con la que hemos conectado. También podremos obtener
un conjunto de resultados. En este caso, esos datos pasarán a otro tipos de
objetos como DataReader o DataAdapter.

• Los objetos Command se deben crear a partir de la conexión que ya se ha


establecido y contendrá una sentencia a SQL a ejecutar sobre dicha
conexión.
• Entre sus propiedades más comunes se encuentran las siguientes:
• CommandText : Contiene la cadena de texto que representa la
sentencia SQL que se ejecutará sobre la fuente de datos.
Entre sus métodos más comunes se encuentran los siguientes:

• ExecuteNonQuery : Ejecuta la sentencia SQL contenida en la


propiedad CommandText del objeto Command. En este caso la
sentencia que se ejecuta debe ser una sentencia de un tipo que no
devuelva resultado alguno (UPDATE, DELETE, INSERT).

• ExecuteReader : Ejecuta la sentencia SQL contenida en la propiedad


CommandText del objeto Command. En este caso si que se
devolverán resultados. El resultado devuelto será un objeto de tipo
DataReader (SqlDataReader/OleDbDataReader) que nos permitirá
leer y recorrer los datos devueltos por la sentencia SQL.
ESQUEMA DE ACCESO A BASE DE DATOS
Cadena de Conexión

'variables básicas de conexión


Dim str_servidor As String = "JAIME\SQL2012"
Dim str_Base As String = "BD_Agenda"
Dim str_usuario As String = "USR1"
Dim str_clave As String = "USR1"
Dim str_conexion As String

str_conexion = "Data Source=" & str_servidor & ";Initial Catalog=" &


str_Base & ";User ID=" & str_usuario & ";password=" & str_clave
Ejemplo de conexion
Imports System.Data.SqlClient

Try
Dim cnn As New SqlConnection
cnn.ConnectionString = str_conexion
cnn.Open()
MsgBox("Conectado")

cnn.close()
MsgBox("Desconectado")

Catch ex As Exception
MsgBox(ex.Message)
End Try
• ExecuteScalar : Utilizada cuando sólo queremos obtener
el dato de la primera columna de la primera fila. El resto de
datos no se tienen en cuenta. Muy útil cuando queremos
recoger la resultado, por ejemplo, de un COUNT(*) ya que
este método devuelve un tipo de dato Object como resultado.
Ejemplo Consulta
Private Sub consulta()
Try
Dim cnn As New SqlConnection
cnn.ConnectionString = str_conexion
Dim str_consulta As String
str_consulta = "Select count(*) from perfil"

Dim comando As New SqlCommand(str_consulta, cnn)


Dim int_resultado As Integer
cnn.Open()
int_resultado = comando.ExecuteScalar
cnn.Close()
MsgBox("La cantidad de perfiles son: " & int_resultado)

Catch ex As Exception
MsgBox(ex.Message)
End Try
End Sub
Ejemplo Insertar
Private Sub insertar()
Try
Dim cnn As New SqlConnection
'cadena de conexion
cnn.ConnectionString = str_conexión
'crear la sentencia sql
Dim str_sentencia As String
str_sentencia = "Insert into perfil
(per_descripcion)values('" & txt_perfil.text & "')"
Dim comando As New SqlCommand(str_sentencia, cnn)
'conectar con la base de datos
cnn.Open()
'ejecuta la sentencia sql
comando.ExecuteNonQuery()
MsgBox("La operación se realizo con éxito")
'desconectar de la base de datos
cnn.Close()
Catch ex As Exception
MsgBox(ex.Message)
End Try
End Sub
Las clases DataReader
• Un objeto DataReader permite la navegación hacia
delante y de sólo lectura de los registros devueltos por
una consulta.
• A diferencia de los objetos que trabajan en modo
desconectado comentados anteriormente, este objeto
permanece conectado durante todo el tiempo que se
esté trabajando con él.
• Para obtener un objeto DataReader tendremos que
ejecutar un método ExecuteReader() de un objeto
Command basado en una consulta SQL.
Propiedades DataReader
• Propiedades más comunes:
• FieldCount : Devuelve el número de columnas de la fila
actual.
• IsClosed : Indica si está (True) o no cerrado (False) el objeto
DataReader.
• Métodos
• Close() : Cierra el objeto DataReader liberando los
recursos.
• Read() : Desplaza el cursor actual al siguiente registro
permitiendo obtener los valores del mismo a través del
objeto DataReader. Además, devolverá True si quedan más
elementos dentro del objeto DataReader y False si hemos
llegado al final del conjunto de registros. La posición inicial
de un objeto DataReader es justo antes del primer registro
por lo que lo primero que deberemos hacer será realizar
una llamada a este método para empezar a obtener
valores.
Ejemplo DataReader
Sub listadoperfiles()
Try
Dim cnn As New SqlConnection
cnn.ConnectionString = "Data Source=JAIME\SQL2008;Initial
Catalog=bd_ejemplosexto;Integrated Security=true"
Dim str_consulta As String
str_consulta = "Select per_descripcion from perfil"
Dim dr As SqlDataReader

Dim comando As New SqlCommand(str_consulta, cnn)


cnn.Open()
dr = comando.ExecuteReader
listado.Items.Clear()
While dr.Read
Me.listado.Items.Add(dr("per_descripcion"))
End While
dr.Close()
cnn.Close()
Catch ex As Exception
MsgBox(ex.Message)

End Try
End Sub
La Clase DataSet
• DataSet es el almacén de datos por excelencia de ADO.NET.
• Un objeto DataSet es capaz de almacenar y representar a una Base de Datos en
memoria y desconectada del proveedor de datos (Base de Datos) que contiene
tablas y sus relaciones.

• Cada tabla contenida dentro del objeto DataSet se encuentra disponible a través
de su propiedad Tables, que es una colección de objetos System.Data.DataTable.

• Cada objeto System.Data.DataTable es una colección de objetos


System.Data.DataRow que representan las filas de la Base de Datos.

• Y siguiendo con esto, cada objeto DataRow posee una colección de objetos
DataColumn que representan cada una de las filas de la fila actual.

• Para poder crear e inicializar las tablas del DataSet deberemos hacer uso del
objeto DataAdapter (SqlAdapter para Microsoft SQL Server).

• Al objeto DataAdapter le pasaremos como parámetro la cadena que represente


la consulta que queremos hacer, y que rellenará de datos el DataSet. Del objeto
DataAdapter utilizaremos su método Fill(), que tiene dos parámetros: uno el
objeto DataSet que se rellenará de datos y otro que será el nombre que tendrá la
tabla dentro del objeto DataSet.
Métodos del Dataset

• Los métodos más importantes de la clase DataSet


• Clear() : Elimina todos los datos almacenados en el objeto DataSet.
• AcceptChanges() : Confirma todos los cambios realizados en el DataSet
(los últimos cambios).

• GetChanges() : Devuelve un objeto DataSet que contiene únicamente los


cambios realizados desde que se cargaron los datos o desde la última vez que se
llamó al método AcceptChanges().

• RejectChanges() : Abandona todo los cambios realizados en el DataSet


(los últimos cambios).
Propiedad mas importante
• Tables
• Devuelve una colección de objetos DataTable que representan cada una de las
tablas contenidas en el objeto DataSet.

Ejemplo

• El siguiente ejemplo muestra como rellenar un ListBox a través de datos obtenidos


de una Base de Datos haciendo uso de objetos DataSet y DataAdapter
Ejemplo
Funciones Personalizadas para Establecer Conexión
con Base de Datos
Imports System.Data.SqlClient
Dim cnn As SqlConnection
Public Function conectar() As Boolean
Try
conectar = False
cnn = New SqlConnection
cnn.ConnectionString = str_conexion
If cnn.State = ConnectionState.Closed Then
cnn.Open()
End If
conectar = True
Catch ex As Exception
conectar = False
End Try
End Function
Public Function desconectar() As Boolean
Try
desconectar = False
If cnn.State = ConnectionState.Open Then
cnn.Close()
desconectar = True
End If
Catch ex As Exception
desconectar = False
End Try
End Function
Recuperar información de una Base de Datos

Función para que recupere datos en un DataReader a partir de una


cadena sql o un procedimiento almacenado sin parámetros

Public Function fun_ExecuteReader(ByVal cadenasql As String, Optional i As Integer = 0) As SqlDataReader


Try
cmd = New SqlCommand
cmd.CommandText = cadenasql
If i = 0 Then
cmd.CommandType = CommandType.Text
Else
cmd.CommandType = CommandType.StoredProcedure
End If
cmd.Connection = cnn
Return cmd.ExecuteReader()
Catch ex As Exception
MsgBox(ex.Message)
Return Nothing
End Try
End Function
Función para que recupere datos en un DataReader a partir de un
procedimiento almacenado con parámetros

Public Function fun_ExecuteReader(ByVal procedimiento As String, ByVal ParamArray parametro()


As String) As SqlDataReader
Try
Dim i As Integer
cmd = New SqlCommand
cmd.CommandText = procedimiento
cmd.CommandType = CommandType.StoredProcedure
cmd.Connection = cnn
'cargar los parámetros
SqlCommandBuilder.DeriveParameters(cmd) 'trae los parámetros
For i = 1 To parametro.Length
CType(cmd.Parameters(i), SqlParameter).Value = parametro(i - 1)
Next
Return cmd.ExecuteReader()
Catch ex As Exception
MsgBox(ex.Message)
Return Nothing
End Try
End Function
Ingresar, Modificar, Eliminar información de una
Base de Datos

Función para que Ingresar, Modificar y Eliminar datos partir de una cadena SQL

Public Function fun_ExecuteNonQuery(ByVal cadena As String) As Boolean


Try
'graba o actualiza pasando una cadena de texto
cmd = New SqlCommand
cmd.CommandText = cadena
cmd.CommandType = CommandType.Text
cmd.Connection = cnn
cmd.ExecuteNonQuery()
Return True
Catch ex As Exception
MsgBox(ex.Message)
Return False
End Try
End Function
Función para que Ingresar, Modificar y Eliminar datos partir de un
procedimiento almacenado con parámetros

Public Function fun_ExecuteNonQuery(ByVal procedimiento As String, ByVal ParamArray parametro()


As String) As Boolean
Dim i As Integer
Try
'graba o actualiza
cmd = New SqlCommand
cmd.CommandText = procedimiento
cmd.CommandType = CommandType.StoredProcedure
cmd.Connection = cnn
'cargar los parámetros
SqlCommandBuilder.DeriveParameters(cmd) 'trae los parámetros
For i = 1 To parametro.Length
CType(cmd.Parameters(i), SqlParameter).Value = parametro(i - 1)
Next
cmd.ExecuteNonQuery()
Return True
Catch ex As Exception
MsgBox(ex.Message)
Return False
End Try
End Function
Realizar la práctica
Cierre
Evaluación

¿Cuál es el nombre del espacio de nombres donde esta definida las clases de
ADO.NET ?

¿Para poder acceder a la información de una base de datos que es lo primero que se
debe hacer?

¿Qué Método de la clase command permite ejecutar una sentencia que no devuelva
resultado alguno?

¿Qué Método de la clase command permite ejecutar una sentencia que permita
devolver resultados?
Bibliografía

Ceballos, fco. J. (2010). Visual Basic.Net Lenguaje y Aplicaciones (RA-MA). España.


FOXALL, J. (2013). Visual Basic 2012 Paso a Paso (ANAYA). ESPAÑA.
LEARN VB.Net PROGRAMING. (2017). Tutorial Básico de VB.Net. Retrieved March 2, 2017,
from https://www.tutorialspoint.com/vb.net/vb.net_overview.htm
Luna, F. O. (2011). Visual Basic: Guía Definitiva del Programador. Buenos Aires: RedUSERS.

Patrick, T. (2010). Programación con Visual Basic 2008. México: McGraw-Hill.

Yuniet, L., & Mesa1, R. (n.d.). Organización de la información: un factor determinante en


la gestión empresarial.

También podría gustarte