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.
Descargar solución ConexionBD_01
Actualización: Como invocar Procedimientos Almacenados en nuestra clase conexión
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:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 |
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:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 |
'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 solución ConexionBD_01
Actualización: Como invocar Procedimientos Almacenados en nuestra clase conexión

27 comentarios
Anónimo - December 7, 2005 10:54 am
Roy
Algo asi estoy necesitando, ojala me puyedas auydar
Mira, tengo una aplicacion donde el usuario carga informacion, ademas tiene que dejar informacion adicional en doc wor, excel, powerpoint, fotos etc.
como le puedo hacer para conectarme a otra base de datos donde dejo los anexos espero me puedas apoyar
\NTKALFACA02SACAnexos ServidorCarpetaArchivos Anexos
he leido lo rferente a XML, es algo que debo implementar en mi sistema, sabes estoy usando FarPoint .NET y maneja algo de esto
saludos
Anónimo - March 25, 2006 2:48 pm
MUY BUENO
Anónimo - May 16, 2006 2:48 pm
ay disculpen me diran muy bruta y todo!!… pero de verdad no se como hacer que esa clase me funcione….
por favor ayudenmeeeee!!!!!…. necesito aprender asp.net YA!!!… es URGENTEEE!!!
Anónimo - May 17, 2006 4:42 pm
EXCELENTE!!!!…. REALMENTE LA CLASE QUE TIENEN AQUI ES GENIAL!!!!!…. SOLO LE AGREGUE UNOS DETALLITOS Y QUEDA PERFECTAAAAAA!!!…. LOS AMO!!!….
Anónimo - June 28, 2006 10:59 pm
jaja, realmente me agrada saber que les funciona. me alegro mucho. espero que pronto tambien colaboren con el sitio publicando articulos.
saludos.
Anónimo - July 20, 2006 8:11 pm
aqui les dejo una nueva version de esta clase, ahora esta maneja procedimientos almacenados de una forma super sencilla. espero que les sirva.
http://www.dotnetcr.com/index.aspx?ID=3&art=97
saludos
Anónimo - July 28, 2006 9:45 am
gracias amigos, xcelente su ayuda… sigan adelante :
atte: d@t0
Anónimo - August 4, 2006 12:54 pm
Y me serviria para conectarme de forma remota a mi base de datos de SQL Server que tengo en mi sitio web?
Les explico un poco más, yo me conecto bien desde el “Enterprise Manager” pero me han pedido que me conecte a una base de datos de SQL Server que tengo en mi servidor de hosting winnethost.com
¿Qué tendría que adaptar para que funcione y me serviriía con SQL Server 2005?
Anónimo - August 6, 2006 9:21 pm
Podrías utilizar está clase sin ningun problema, yo también estoy hospedado en http://www.winnethost.com y accedo de forma remota a mis bases de datos utilizando esta gran clase. Aunque yo la he adaptado un poco más.
Anónimo - August 14, 2006 1:15 pm
Para Roy bueno yo conozco el servidor de NTKALFAKA02 si no me equivoco es de Thomas^Betts si es asi comunicate gadiel_sandoval@hotmail.com
Sobre el asunto de lo que deseas realizar trabaje ahi un tiempo en Visual Basic .Net 2003
Anónimo - August 14, 2006 1:16 pm
PARA EL SIGUIENTE MENSAJE QUE CLASE DESEAS HACER
ay disculpen me diran muy bruta y todo!!… pero de verdad no se como hacer que esa clase me funcione….
por favor ayudenmeeeee!!!!!…. necesito aprender asp.net YA!!!… es URGENTEEE!!!
gadiel_sandoval@hotmail.com
Anónimo - August 15, 2006 12:44 pm
Hola mmmm tengo un problema al querer abrir la db SQL me marca el error 40 que al parecer no puede abrir un db remoto y que cheque en la configuracion de SQL, ya lo hice y al parecer tiene lo debiera permitir. Alguien sabe algo sobre esto Yo cree esta clase tal cual como lo explica el ejemplo pero al parecer no puedo abrir la base de datos ayuda please mi mail:
raul.garciaa@gmail.com
Anónimo - September 17, 2006 3:50 am
pues habria que ver si tienes permisos para abrir una BD de forma remota, podria ser que esos privilegios esten cerrados por seguridad, algo que es muy comun.
Anónimo - September 27, 2006 5:44 pm
POR FAVOR NECESITO MANEJAR EXCELENTEMENTE BIEN VISUAL 2005 , AUXILIOOOO
marialopezsilverio@hotmail.com
Anónimo - September 27, 2006 5:46 pm
VISUAL BASIC 2005 , Estoy en proyecto de grado en la uni y eso es lo que me exigen….
marialopezsilverio@hotmail.com
Anónimo - September 27, 2006 5:49 pm
POR FAVOR NECESITO MANEJAR EXCELENTEMENTE BIEN VISUAL 2005 , AUXILIOOOO
marialopezsilverio@hotmail.com
Anónimo - November 2, 2006 10:34 am
Un favor, necesito recuperar la fecha y hora que tiene el servidor que esta alojando la base de datos SQL. Alguien sabria como hacer eso?
Anónimo - December 11, 2006 12:36 pm
necesito una aplicacion en asp que jale la base de datos sql server alguin podria hacerlo
Anónimo - March 2, 2007 7:25 am
PORFAVOR QUIERO ABER COMO HACER UNA BASE DE DATOS
Anónimo - May 16, 2007 5:16 pm
La verdad excelente, gran trabajo haz echo, te felicito y te agradezco
Anónimo - July 10, 2007 5:50 pm
necesito saber como le hago para dar de alta a alumnos claro con vb.net ual esel codigo para hacerlo pues tengo que hacer el abc y m para un proyecto urgente(u.huguin@hotmail.com)
Anónimo - July 18, 2007 10:31 am
me da un error en me.dgDatos.DataSource = ds.Tables(0), especificamente en “me.dgDatos”
Anónimo - August 26, 2007 12:39 pm
cual error te esta dando?
y aqui hay un ejemplo de la conexion con una aplicacion ASP.NET
http://www.dotnetcr.com/Libreria.aspx?art=108&tag=Aplicacion-Web-To-Do-List-o-Task-List-utilizando-ASPNET-2005-y-Ajax
Anónimo - March 4, 2010 1:31 pm
GRacias por el ejemplo…
Anónimo - March 4, 2010 1:33 pm
pronto voy a publicar otra version de esta clase, con muchas mejoras y mejor rendimiento.
Anónimo - June 14, 2011 8:04 pm
pues habria que ver si tienes permisos para abrir una BD de forma remota, podria ser que esos privilegios esten cerrados por seguridad, algo que es muy comun. RPTA:
que hago para descartar el erros como descarto que hago para habrir la seguridad
Anónimo - November 16, 2011 11:54 am
Muy buen ejemplo, aquí va la clase para MYSQL:
Imports MySql.Data.MySqlClient
Public Class clsConexion
#Region ” Variables “
‘Variable que utilizaremos para la conexion
Private mServidor As String
Private mBaseDatos As String
Private mUsuario As String
Private mPassword As String
‘Private mConSSPI As Boolean = False
#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 & “; ” & _
“user id=” & Usuario & “;” & _
“password=” & Password
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
Dim dsActividades As New DataSet
Try
‘Se crea la conexion a la base de datos.
Dim sqlConn As New MySqlConnection
sqlConn.ConnectionString = Me.StrConexion
Dim sqlCmd As New MySqlCommand(strSQL, sqlConn)
Dim sda As New MySqlDataAdapter(sqlCmd)
Dim ds As New DataSet
sda.Fill(ds)
Return ds
Catch ex As Exception
Throw ex
End Try
End Function
End Class