¿Como obtener con Visual Basic .NET las tablas de una base de datos en SQL Server y sus estructuras?
Short Description
Descripción: Estructura de base de datos SQL Server con VB .NET, obtener tablas de SQL Server con VB, explorar base de d...
Description
Página 1 de 4
¿Cómo 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 común. 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 utilizarán para realizar la conexión al servidor. Sus nombres a continuación:
txtServidor txtUsuario txtContrasena txtBD
Dos botones (uno para conectar al servidor y otro para cerrar la aplicación):
btnConectar btnCerrar
Kubical ORG Software Studio
Teléfono: (+506) 2417-1912
Sitio web: www.kubicalorg.net
Página 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 INFORMATION_SC HEMA contiene toda la información que necesitamos para obtener la lista de tablas y sus estructuras. Ahora únicamente nos falta comenzar a agregar código para ver en funcionamiento la System.Data.SqlClient). nueva aplicación (se debe importar System.Data.SqlClient). Botón btnConectar: Private Sub btnConectar_Click( ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnConectar.Click If Me Me.txtServidor.Text.Trim .txtServidor.Text.Trim "" And Me Me.txtUsuario.Text.Trim .txtUsuario.Text.Trim "" _ And Me Me.txtBD.Text.Trim .txtBD.Text.Trim "" Then Me.lstTablas.Items.Clear() Me .lstTablas.Items.Clear() : Me Me.lvEstructura.Items.Clear() .lvEstructura.Items.Clear() Try '//construimos la cadena de conexion modGlobal.strConexion_Cadena = "DATA SOURCE=" _ & Me Me.txtServidor.Text.Trim .txtServidor.Text.Trim _ & ";USER ID=" & Me Me.txtUsuario.Text.Trim .txtUsuario.Text.Trim & ";PASSWORD=" _ & Me Me.txtContrasena.Text.Trim .txtContrasena.Text.Trim _ & ";INITIAL CATALOG=" & Me Me.txtBD.Text.Trim .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 Me.psMostrar_Tablas() .psMostrar_Tablas() Me.lstTablas.Focus() Me .lstTablas.Focus() Catch ex As Exception MessageBox.Show(ex.Message, _ “Mensaje”, MessageBoxButtons.OK, MessageBoxIcon.Error) End Try Else If Me.txtServidor.Text.Trim Me.txtServidor.Text.Trim = "" Then MessageBox.Show( "Por favor, digite el nombre del servidor." , _ “Mensaje”, MessageBoxButtons.OK, MessageBoxIcon.Error) Me.txtServidor.Clear() Me .txtServidor.Clear() : Me Me.txtServidor.Focus() .txtServidor.Focus() ElseIf Me Me.txtUsuario.Text.Trim .txtUsuario.Text.Trim = "" Then MessageBox.Show( "Por favor, digite el usuario que desea utilizar." , _ “Mensaje”, MessageBoxButtons.OK, MessageBoxIcon.Error) Me.txtUsuario.Clear() Me .txtUsuario.Clear() : Me Me.txtUsuario.Focus() .txtUsuario.Focus() Else MessageBox.Show( "Por favor, digite el nombre de la base de datos." , _ “Mensaje”, MessageBoxButtons.OK,
Kubical ORG Software Studio
Teléfono: (+506) 2417-1912
Sitio web: www.kubicalorg.net
Página 3 de 4 MessageBoxIcon.Error) Me.txtBD.Clear() Me .txtBD.Clear() : Me Me.txtBD.Focus() .txtBD.Focus() End If End If End Sub
El código anterior nos permitirá conectarnos al servidor de bases de datos y obtener la lista de tablas por medio de la l a llamada al procedimiento psMostrar_Tablas. Procedimiento psMostrar_Tablas: Private Sub psMostrar_Tablas() Me.lstTablas.Items.Clear() 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", “NAME", conConexion) Dim drTablas As SqlDataReader conConexion.Open() drTablas = coSQL.ExecuteReader While drTablas.Read Me.lstTablas.Items.Add(drTablas( Me .lstTablas.Items.Add(drTablas( "TABLE_NAME" )) End While drTablas.Close() conConexion.Close() If Me Me.lstTablas.Items.Count .lstTablas.Items.Count > 0 Then Me Me.lstTablas.SelectedIndex .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 l as agrega a lstTablas. Procedimiento psEstructura_Tabla:
Private Sub psEstructura_Tabla( ByVal strTabla As String String) ) Me.lvEstructura.Items.Clear() 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 Me.lvEstructura .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
Teléfono: (+506) 2417-1912
Sitio web: www.kubicalorg.net
Página 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 máxima 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 Me.psEstructura_Tabla( .psEstructura_Tabla( Me Me.lstTablas.Text) .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 además, podría 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 mínimos.
Se permite la publicación y distribución 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
Teléfono: (+506) 2417-1912
Sitio web: www.kubicalorg.net
View more...
Comments