viernes, abril 19, 2024

Como realizar conexión con nuestra base de datos

Este articulo ya lo actualizamos, con la clase que agrega la funcionalidad de Procedimientos Almacenados en el link que mostramos acontinuación. Importante: haber leido primero este artículo base y luego el artículo actualizado para su mayor comprensión.

Actualización: Como invocar Procedimientos Almacenados en nuestra clase conexión

______

Descargar ejemplo ConexionDB_01.zip

En nuestras aplicaciones generalmente tenemos que manejar datos obtenidos de nuestras bases de datos, y para facilitarnos el trabajo tendremos que crear una clase que nos maneje las acciones que podremos hacer directamente en la base de datos, consultas, conexiones, llamadas a procedimientos almacenados y demás.

En esta ocación la clase conexión solo va a poder procesar Querys enviados desde el mismo programa, en la próxima entrega vamos a brindar la opción de como procesar procedimientos almacenados.

Para este ejemplo vamos a importar la clase SqlClient (Imports System.Data.SqlClient), pero bien para este mismo ejemplo podríamos utilizar las otras interfaces disponibles en .Net, como OracleClient, OleDb u Odbc.

Como primer paso vamos a crear una clase Conexion en la cual vamos escribir lo siguiente:

Imports System.Data.SqlClient

Public Class Conexion

#Region » Variables «

'Variable que utilizaremos para la conexion
Private mUsuario As String
Private mPassword As String
Private mConSSPI As Boolean = False
Private mServidor As String
Private mBaseDatos As String

#End Region

#Region » Propiedades «

'Propiedades publicas que podrán ser accesadas
'desde el form u otra clase

Public Property Usuario() As String
Get
Return mUsuario
End Get
Set(ByVal Value As String)
mUsuario = Value
End Set
End Property

Public Property Password() As String
Get
Return mPassword
End Get
Set(ByVal Value As String)
mPassword = Value
End Set
End Property

'SSPI indica si queremos la conexion
'con Seguridad Integrada
'En el caso de que ConSSPI sea True no es necesario
'enviar los datos de usuario y password
Public Property ConSSPI() As Boolean
Get
Return mConSSPI
End Get
Set(ByVal Value As Boolean)
mConSSPI = Value
End Set
End Property

Public Property Servidor() As String
Get
Return mServidor
End Get
Set(ByVal Value As String)
mServidor = Value
End Set
End Property

Public Property BaseDatos() As String
Get
Return mBaseDatos
End Get
Set(ByVal Value As String)
mBaseDatos = Value
End Set
End Property

#End Region

'Función privada para el manejo del String de conexion
Private Function StrConexion() As String
Try
Dim strConn As String
strConn = «Server=» & Servidor & «; » & _
«DataBase=» & BaseDatos & «; «
If Not ConSSPI Then
strConn &= «user id=» & Usuario & «;password=» & Password
Else
strConn &= «Integrated Security=SSPI»
End If

Return strConn
Catch ex As Exception
Throw ex
End Try
End Function

'Funcion a la cual se le envia el query de la
'consulta y nos retorna un DataSet
Public Function ConsultaBD(ByVal pQuery As String) As DataSet
Try
Return CreateDataSet(pQuery)
Catch ex As Exception
Throw ex
End Try
End Function

'Procesa el query y crea el dataset de la consulta
Private Function CreateDataSet(ByVal strSQL As String) As DataSet
Try
'Se crea la conexion a la base de datos.
Dim sqlConn As New SqlConnection(Me.StrConexion)

'SqlCommand es utilizado para ejecutar los comandos SQL
Dim sqlCmd As New SqlCommand(strSQL, sqlConn)

'Se le define el tiempo de espera en segundos para la consulta,
'el valor default es 30 segundos.
'Si una consulta es muy compleja podria ser que dure mucho en retornar los datos,
'por eso le definimos el tiempo de respuesta en bastantes segundos
sqlCmd.CommandTimeout = 3600

'SqlAdapter utiliza el SqlCommand para llenar el Dataset
Dim sda As New SqlDataAdapter(sqlCmd)

'Se llena el dataset
Dim ds As New DataSet
sda.Fill(ds)

Return ds
Catch ex As Exception
Throw ex
End Try
End Function

End Class

Una ves que tenemos esta clase terminada, solo debemos llamarla desde el formulario o la capa de datos de nuestra aplicación.

Un ejemplo de como utilizar esta clase podría ser:

'Creamos una variable de tipo Conexion (clase que creamos arriba)
Dim con As New Conexion

'En el load de este ejemplo le definimos las variables
'para la conexion
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Try
con.Servidor = «nombre_servidor»
con.BaseDatos = «nombre_basedatos»
con.Usuario = «usuario_bd»
con.Password = «clave_bd»
Catch ex As Exception
MsgBox(ex.Message)
End Try
End Sub

'En este ejemplo tenemos esto en el boton pero lo correcto,
'seria manejar las consultas en otra capa de nuestra aplicacion.
'en la capa de datos
Private Sub btnDatos_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnDatos.Click
Try
Dim ds As New DataSet
Dim strQry As String

strQry = «SELECT * FROM TABLA»
ds = con.ConsultaBD(strQry)

Me.dgDatos.DataSource = ds.Tables(0)

Catch ex As Exception
MsgBox(ex.Message)
Ed Try
End Sub

Descargar ejemplo ConexionDB_01.zip

____
Este articulo ya lo actualizamos, con la clase que agrega la funcionalidad de Procedimientos Almacenados en el link que mostramos acontinuación. Importante: haber leido primero este artículo base y luego el artículo actualizado para su mayor comprensión.

Actualización: Como invocar Procedimientos Almacenados en nuestra clase conexión

Roy Rojas
Roy Rojashttp://www.dotnetcr.com
Con más de 20 años de experiencia en programación, experto en lenguajes .NET, VB, C#, ASP.NET, Xamarin, XCode, DBA en SQL Server. Creador de dotnetcr.com, sitio web para programadores en español. royrojas.com | dotnetcr.com | GitHub
Roy Rojas
Roy Rojashttp://www.dotnetcr.com
Con más de 20 años de experiencia en programación, experto en lenguajes .NET, VB, C#, ASP.NET, Xamarin, XCode, DBA en SQL Server. Creador de dotnetcr.com, sitio web para programadores en español. royrojas.com | dotnetcr.com | GitHub