martes, 23 de marzo de 2010

Obtener esquema de una tabla de Sql Server

Ejemplo para poder obtener el esquema de una tabla de una base de datos Sql
server

Este Código fuente de ejemplo es de la MSDN y muestra una forma para poder obtener el esquema de una tabla de sql server, utilizando el método GetSchemaTable del objeto SqlDataReader para sql native client y también con OleDbDataReader para Oledb

El mismo ejemplo para vb.net para listar los nombres de columnas y las propiedades para cada campo

Colocar un control ListBox en el formulario, y un control button. Al presionar el botón ,se abre un inputbox para indicar el nombre de la tabla

código fuente
Option Explicit On
Option Strict On

' Espacio de nombres para poder acceder al Sql Native Client
Imports System.Data.SqlClient

Public Class Form1

Private Sub Form1_Load(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles MyBase.Load

Button1.Text = "Obtener esquema de tabla"

End Sub

Private Sub Button1_Click(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles Button1.Click

Dim Tabla As String = InputBox("Indicar Nombre de la tabla", "Esquema")

If Tabla <> String.Empty Then
' le pasa el nombre de la tabla , y obtiene los datos
'para mostrarlos en el ListBox
With ListBox1
.Items.Clear()
.DataSource = Obtener_Esquema_Tabla(Tabla.ToString)
End With

End If

End Sub

Private Function Obtener_Esquema_Tabla(ByVal Name_tabla As String) As ArrayList

Try

'Crear nueva conexión
Using cn As New SqlConnection()

'Asignar la Cadena de conexión para la base SQL Server.
cn.ConnectionString = "Data Source=(local)\SQLEXPRESS;" & _
"Integrated Security=True;" &"Initial Catalog=bd"

' abrir la conexión
cn.Open()

' Nuevo comando
Dim comando As New SqlCommand()

' Asignar la conexión al comand y la consulta sql
comando.Connection = cn
comando.CommandText = "SELECT * FROM " & "[" & Name_tabla & "]"

' Inicializar y ejecutar el DataReader
Using SqlDataReader As SqlDataReader = comando.ExecuteReader()

'Recuperar el esquema de columna en un DataTable.

Dim esquema As DataTable = SqlDataReader.GetSchemaTable()

Dim arrtemp As New ArrayList

'Recorrer los campos de la tabla
For Each campo As DataRow In esquema.Rows

' Agregar el nombre de la columna

arrtemp.Add("Columna: " & campo(0).ToString())
arrtemp.Add("-------------------------------")

'Obtener las propiedades de cada campo
For Each propiedad As DataColumn In esquema.Columns
'Mostrar el nombre y el valor del campo.
arrtemp.Add(" " & propiedad.ColumnName & " = " & _
campo(propiedad).ToString)
Next
arrtemp.Add("")
Next
' retorna la colección con los datos
Return arrtemp
End Using
End Using

' errores
Catch ex As Exception
MsgBox(ex.Message.ToString, MsgBoxStyle.Critical)
End Try
Return Nothing
End Function
End Class

No hay comentarios:

Publicar un comentario