¿como obtener con visual basic .net las tablas de una base de datos en sql server y sus...

4
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

Upload: juan-carlos-rojas

Post on 27-Jul-2015

4.878 views

Category:

Documents


4 download

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

TRANSCRIPT

Page 1: ¿Como obtener con Visual Basic .NET las tablas de una base de datos en SQL Server y sus estructuras?

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

Page 2: ¿Como obtener con Visual Basic .NET las tablas de una base de datos en SQL Server y sus estructuras?

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,

Page 3: ¿Como obtener con Visual Basic .NET las tablas de una base de datos en SQL Server y sus estructuras?

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

Page 4: ¿Como obtener con Visual Basic .NET las tablas de una base de datos en SQL Server y sus estructuras?

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