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 OledbEl 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
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