Upload
juan-carlos-rojas
View
4.878
Download
4
Embed Size (px)
DESCRIPTION
Estructura de base de datos SQL Server con VB .NET, obtener tablas de SQL Server con VB, explorar base de datos con VB, lista de tablas con VB
Citation preview
Página 1 de 4
Kubical ORG Software Studio Teléfono: (+506) 2417-1912 Sitio web: www.kubicalorg.net
¿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
Página 2 de 4
Kubical ORG Software Studio Teléfono: (+506) 2417-1912 Sitio web: www.kubicalorg.net
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 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
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.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 in gresar 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,
Página 3 de 4
Kubical ORG Software Studio Teléfono: (+506) 2417-1912 Sitio web: www.kubicalorg.net
MessageBoxIcon.Error) Me.txtBD.Clear() : Me.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 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<>'sys diagrams' 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, Messag eBoxIcon.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).SubIte ms.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).Su bItems.Add( "" ) End If .Items(.Items.Count - 1).SubIte ms.Add(drColumnas( "IS_NULLABLE" )) End With
Página 4 de 4
Kubical ORG Software Studio Teléfono: (+506) 2417-1912 Sitio web: www.kubicalorg.net
End While drColumnas.Close() conConexion.Close() Catch ex As Exception MessageBox.Show(ex.Message, _ “Mensaje”, MessageBoxButtons.OK, Messag eBoxIcon.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.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 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