Está en la página 1de 4

Visual .

NET: Operaciones con bases de datos (1)


Por Francisco | 31 de Enero de 2007 | 4 comentarios

Una vez realizada la conexión con la base de datos la utilizaremos para comunicarnos y
trabajar con esa base de datos. Podemos realizar cuatro tipos de operaciones diferentes:
Consultar, Modificar, Insertar y Eliminar datos. Las consultas a una base de datos son
básicamente todas iguales solo varia el volumen de la respuesta. Ante una consulta así:

1. Dim Sql as String


2. Sql=”Select Nombre From Clientes”

Es de esperar que el volumen de la respuesta sea bastante grande, es decir que la base de
datos devuelva muchos registros. En cambio ante una consulta así:

1. Dim Sql as Strip

Sql=”Select Nombre From Clientes Where IdCliente=1″

Solo obtendremos un registro como respuesta, el nombre del cliente 1. Por lo tanto la
forma de tratar ambas consultas la haremos de forma diferente para sacarle algo más de
partido a las opciones que nos da Visual Basic.

Veremos en primer lugar el segundo escenario, donde la base de datos nos devolverá un
solo registro. Dado que este tipo de consulta se puede repetir mucho dentro de un
proyecto podrÃímos crear una Clase que nos sirviera para siempre y en cualquier tipo
de proyecto. Se podría incluir dentro de una dll o sencillamente copiar y pegar en otro
proyecto.

Para desarrollar esta pequeña clase emplearemos diversos objetos, que pasamos a
explicar:

1. OleDbCommand: La conexión que usamos en este ejemplo es una conexión via


OleDb, por eso usamos este objeto. Si fuera una conexión ODBC utilizaríamos
OdbcCommand y si fuera una conexión Sql usaríamos SqlCommand. El objeto
OleDbCommand es el comando que nos permitirá pasar a la base de datos una
sentencia SQL.
2. OleDbCommand tiene una serie de métodos que ejecutan comandos en la base
de datos, el que en este momento nos interesa es ExecuteScalar ya que es
especialmente adecuado para una consulta que devuelve una única línea.

Nuestra pequeña clase quedará de esta manera:

1. Public Class CBuscarValor ‘es el nombre de la clase


2. Public Shared Sub BuscarValor(ByVal Sql As String, ByVal Variable As
TextBox)
3. ‘es el procedimiento compartido que utilizaremos para encontrar el valor que
buscamos.
4. ‘a este procedimiento le pasamos dos parámetros. La correspondiente sentencia
SQL y un
5. ‘objeto textbox donde recogeremos la respuesta del procedimiento. De la misma
manera podríamos
6. ‘pasarle una variable si eso nos interesa mas.
7. ‘nos aseguramos que el textbox esta vacio
8. Variable.Text = “”
9. ‘abrimos el gestor de errores.
10. Try
11. ‘abrimos la conexión
12. Conexion.Open()
13. ‘creamos el comando al que pasamos la sentencia SQL y le indicamos que
conexión debe utilizar
14. ‘conexión que como vimos en el artículo Visual Basic: Conexión con bases de
datos (2) hemos creado en un modulo aparte.
15. ‘Al final de la explicación mostraremos otra vez el código para que lo tengais
más cómodo.
16. Dim Olecmd As OleDbCommand = New OleDbCommand(Sql, Conexion)
17. ‘ejecutamos el comando en la base de datos y comprobamos que nos devuelve
18. ’si devuelve un valor nulo no devolvemos nada
19. If IsDBNull(Olecmd.ExecuteScalar()) Then
20. Variable.Text = “”
21. Else
22. ’si devuelve un valor se lo pasamos al textbox
23. Variable.Text = Olecmd.ExecuteScalar()
24. End If
25. Catch err As Exception
26. ‘en caso de error mostramos que ha sucedido
27. MsgBox(err.ToString, MsgBoxStyle.Critical, “Información del Sistema”)
28. Finally
29. ‘y pase lo que pase cerramos la conexión
30. Conexion.Close()
31. End Try
32. End Sub
33. End Class

Descarga el código fuente

Veamos como funcionaria todo esto en un proyecto real. Abrimos un nuevo proyecto de
Windows, con un solo formulario cuyo diseño será el siguiente:
Haremos doble clic en el botón y escribiremos el siguiente código:

1. Imports System.Data.OleDb ‘importamos el espacio con nombres


2. Private Sub cmdAceptar_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles cmdAceptar.Click
3. ‘creo una cadena de conexión con la constante strProv que está en el module1 a
la que concateno
4. ‘con & la dirección completa de la BD que voy a utilizar
5. Conexion.ConnectionString = strProv % “Data Source=C:\Pruebas.mdb”
6. ‘creo la sentencia SQL del valor que quiere recuperar.
7. ‘quiere el nombre del cliente numero 15 de mi tabla de clientes.
8. Dim Sql As String
9. Sql = “Select Cliente From Clientes Where IdCliente=” & 15
10. ‘ahora utilizamos nuestra clase. No es preciso crear una nueva instancia de clase
11. ‘del tipo: Dim Valor as New CBuscarValor, porque el procedimiento que
contiene es
12. ‘publico y Shared por lo tanto podemos acceder a el directamente.
13. CBuscarValor.BuscarValor(Sql, txtPrueba)
14. ‘Al pulsar el botón del formulario nos mostrara el nombre del cliente solicitado.
15. End Sub
16. End Class

Descarga el código fuente


El código del modulo donde esta la conexión es:

1. Imports System.Data.OleDb ‘importamos el espacio con nombres


2. Module Module1
3. Public Conexion As New System.Data.OleDb.OleDbConnection
4. Public Const strProv = “Provider=Microsoft.Jet.OLEDB.4.0″
5. End Module

Descarga el código fuente

Enlaces interesantes

• Descarga programas de Visual Basic .NET