Está en la página 1de 4

Pgina 1 de 4

Cmo obtener con Visual Basic .NET las tablas de una base de datos en SQL Server y sus estructuras?
Realizar esta tarea con Visual Basic .NET 2008 es realmente sencillo y nada fuera de lo comn. Lo primero que debemos hacer (para seguir el ejemplo) es crear un formulario con una apariencia similar a la siguiente:

Debemos agregar 4 TextBox, los cuales se utilizarn para realizar la conexin al servidor. Sus nombres a continuacin: txtServidor txtUsuario txtContrasena txtBD Dos botones (uno para conectar al servidor y otro para cerrar la aplicacin): btnConectar btnCerrar
Kubical ORG Software Studio Telfono: (+506) 2417-1912 Sitio web: www.kubicalorg.net

Pgina 2 de 4

Un ListBox para cargar la lista de tablas de la base de datos: lstTablas. Finalmente, un ListView que se utilizar para mostrar la estructura de una tabla cuando sea seleccionada. El ListView debe contener las siguientes columnas: Columna Tipo Longitud Nulos Para este ejemplo tomaremos nicamente esos datos de INFORMATION_SCHEMA. INFORMATION_SCHEMA contiene toda la informacin que necesitamos para obtener la lista de tablas y sus estructuras. Ahora nicamente nos falta comenzar a agregar cdigo para ver en funcionamiento la nueva aplicacin (se debe importar System.Data.SqlClient). Botn btnConectar:
Private Sub btnConectar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnConectar.Click If Me.txtServidor.Text.Trim <> "" And Me.txtUsuario.Text.Trim <> "" _ And Me.txtBD.Text.Trim <> "" Then Me.lstTablas.Items.Clear() : Me.lvEstructura.Items.Clear() Try '//construimos la cadena de conexion modGlobal.strConexion_Cadena = "DATA SOURCE=" _ & Me.txtServidor.Text.Trim _ & ";USER ID=" & Me.txtUsuario.Text.Trim & ";PASSWORD=" _ & Me.txtContrasena.Text.Trim _ & ";INITIAL CATALOG=" & Me.txtBD.Text.Trim Dim conConexion As New SqlConnection(modGlobal.strConexion_Cadena) '//abrimos la conexion para verificar si podemos ingresar al servidor conConexion.Open() '//cerramos la conexion conConexion.Close() '//mostramos las tablas de la bd Call Me.psMostrar_Tablas() Me.lstTablas.Focus() Catch ex As Exception MessageBox.Show(ex.Message, _ Mensaje, MessageBoxButtons.OK, MessageBoxIcon.Error) End Try Else If Me.txtServidor.Text.Trim = "" Then MessageBox.Show("Por favor, digite el nombre del servidor.", _ Mensaje, MessageBoxButtons.OK, MessageBoxIcon.Error) Me.txtServidor.Clear() : Me.txtServidor.Focus() ElseIf Me.txtUsuario.Text.Trim = "" Then MessageBox.Show("Por favor, digite el usuario que desea utilizar.", _ Mensaje, MessageBoxButtons.OK, MessageBoxIcon.Error) Me.txtUsuario.Clear() : Me.txtUsuario.Focus() Else MessageBox.Show("Por favor, digite el nombre de la base de datos.", _ Mensaje, MessageBoxButtons.OK,

Kubical ORG Software Studio

Telfono: (+506) 2417-1912

Sitio web: www.kubicalorg.net

Pgina 3 de 4
MessageBoxIcon.Error) Me.txtBD.Clear() : Me.txtBD.Focus() End If End If End Sub

El cdigo anterior nos permitir conectarnos al servidor de bases de datos y obtener la lista de tablas por medio de la llamada al procedimiento psMostrar_Tablas. Procedimiento psMostrar_Tablas:
Private Sub psMostrar_Tablas() Me.lstTablas.Items.Clear() Try Dim conConexion As New SqlConnection(modGlobal.strConexion_Cadena) Dim coSQL As New SqlCommand("SELECT TABLE_NAME FROM INFORMATION_ _ & SCHEMA.TABLES WHERE TABLE_NAME<>'sysdiagrams' ORDER BY TABLE_ _ & NAME", conConexion) Dim drTablas As SqlDataReader conConexion.Open() drTablas = coSQL.ExecuteReader While drTablas.Read Me.lstTablas.Items.Add(drTablas("TABLE_NAME")) End While drTablas.Close() conConexion.Close() If Me.lstTablas.Items.Count > 0 Then Me.lstTablas.SelectedIndex = 0 Catch ex As Exception MessageBox.Show(ex.Message, _ Mensaje, MessageBoxButtons.OK, MessageBoxIcon.Error) End Try End Sub

El procedimiento psMostrar_Tablas obtiene el nombre de todas las tablas de la base de datos especificada por el usuario (en el campo txtBD) y las agrega a lstTablas. Procedimiento psEstructura_Tabla:
Private Sub psEstructura_Tabla(ByVal strTabla As String) Me.lvEstructura.Items.Clear() Try Dim conConexion As New SqlConnection(modGlobal.strConexion_Cadena) Dim coSQL As New SqlCommand("SELECT COLUMN_NAME,DATA_TYPE, _ & CHARACTER_MAXIMUM_LENGTH,IS_NULLABLE FROM INFORMATION_SCHEMA. _ & COLUMNS WHERE TABLE_NAME='" & strTabla & "'", conConexion) Dim drColumnas As SqlDataReader conConexion.Open() drColumnas = coSQL.ExecuteReader While drColumnas.Read With Me.lvEstructura .Items.Add(drColumnas("COLUMN_NAME")) .Items(.Items.Count - 1).SubItems.Add(drColumnas("DATA_TYPE")) If Not Convert.IsDBNull(drColumnas("CHARACTER_MAXIMUM_LENGTH")) Then .Items(.Items.Count 1).SubItems.Add(drColumnas("CHARACTER_MAXIMUM_LENGTH")) Else .Items(.Items.Count - 1).SubItems.Add("") End If .Items(.Items.Count - 1).SubItems.Add(drColumnas("IS_NULLABLE")) End With

Kubical ORG Software Studio

Telfono: (+506) 2417-1912

Sitio web: www.kubicalorg.net

Pgina 4 de 4
End While drColumnas.Close() conConexion.Close() Catch ex As Exception MessageBox.Show(ex.Message, _ Mensaje, MessageBoxButtons.OK, MessageBoxIcon.Error) End Try End Sub

psEstructura_Tabla nos permite obtener la lista de campos de una tabla (strTabla), su tipo, longitud mxima y saber si el campo permite valores nulos. Este procedimiento es llamado en el evento SelectedIndexChanged del ListBox lstTablas. Evento SelectedIndexChanged del lstTablas:
Private Sub lstTablas_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles lstTablas.SelectedIndexChanged Call Me.psEstructura_Tabla(Me.lstTablas.Text) End Sub

Este evento carga la estructura de cualquiera de las tablas seleccionadas en el ListBox.

Como pueden ver, esto no requiere de conocimientos avanzados y adems, podra realizarse con cualquier otro lenguaje que no sea VB .NET. INFORMATION_SCHEMA est disponible en la base de datos para ser utilizado. Este ejemplo puede funcionar con MySQL, nicamente se debe instalar el driver para conectar al servidor (MySQLDriverCS) y realizar cambios mnimos.

Se permite la publicacin y distribucin de la totalidad o parte de este documento (por cualquier medio), siempre y cuando se mencionen los datos del autor y el contenido se mantenga intacto.

Desarrollado por Juan Carlos Rojas 2010 Kubical ORG Software Studio Puriscal, San Jos, Costa Rica

Kubical ORG Software Studio

Telfono: (+506) 2417-1912

Sitio web: www.kubicalorg.net

También podría gustarte