Anda di halaman 1dari 8

Cmo recuperar el esquema de

columna mediante el mtodo


GetSchemaTable del objeto
DataReader y Visual Basic .NET

Email

Print
Este artculo se public anteriormente con el nmero E310108
Para obtener una versin de este artculo para Microsoft Visual C# .NET,
vea 310107.
Para obtener una versin de este artculo para Microsoft Visual C++
.NET, vea 309683.
Este artculo hace referencia al siguiente espacio de nombres de la
Biblioteca de clases de Microsoft .NET Framework:

System.Data.OleDb

EN ESTA TAREA

RESUMEN
Cundo utilizar el mtodo GetSchemaTableRecuperar el esquema de
columna Schema con el proveedor de OLE DB .NETRecuperar el esquema
de columna Schema con el proveedor de SQL .NET

REFERENCIAS

Resumen
En este artculo se muestra cmo utilizar el
mtodo GetSchemaTable del objeto DataReader en ADO.NET para
recuperar informacin del esquema de columna. El esquema de una
columna tambin se denomina propiedades de campo. La informacin
del esquema de columna incluye la informacin siguiente acerca de la
columna:

Nombre

Tipo de datos

Tamao

Si la columna es un campo de clave principal

Si la columna es un campo Autonumrico (AutoIncrement)


El mtodo GetSchemaTable devuelve una propiedad DataTable que
contiene el esquema de columna para un DataReader. La
propiedadDataTable contiene una fila para cada campo del conjunto de
resultados. Cada columna se asigna a una propiedad del campo del
conjunto de resultados. La propiedad ColumnName de la
columna DataTable es el nombre de la propiedad del campo, como la
propiedadColumnName, DataType, ColumnSize, IsKeyColumn o IsA
utoIncrement. El valor de la columna DataTable es el valor de la
propiedad del campo, como el valor FirstName de la
propiedad ColumnName.
Nota: para obtener la informacin de clave principal que incluye si un
campo forma parte de una clave principal y si es un
campoAutoIncrement, debe establecer el
valor CommandBehavior de DataReader en CommandBehavior.Key
Info.
Puede utilizar el mtodo GetSchemaTable con el proveedor de OLE
DB .NET o con el proveedor de SQL .NET. El
mtodoOleDbDataReader.GetSchemaTable se asigna al
mtodo IColumnsRowset::GetColumnsRowset de OLE DB. El
mtodoSqlDataReader.GetSchemaTable no utiliza una capa del
proveedor de OLE DB.
A menos que utilice explcitamente el
mtodo GetSchemaTable, DataReader no devuelve el esquema de
columna. Adems, si utilizaGetSchemaTable para recuperar el
esquema de columna no podr
actualizar DataReader. DataReader siempre recupera una cadena de
datos de avance de slo lectura a partir de una base de datos.
Volver al principio

Cundo utilizar el mtodo GetSchemaTable

El objeto SqlConnection no permite recuperar informacin de


esquema de SQL Server en un mtodo anlogo al
mtodoGetOleDbSchemaTable del objeto OleDbConnection. El
mtodo GetSchemaTable de la clase SqlDataReader proporciona una

manera sencilla de obtener informacin de esquema de columna desde


SQL Server.

Aunque el mtodo GetOleDbSchemaTable del


objeto OleDbConnection puede devolver informacin de esquema de
base de datos, tabla y columna, el mtodo GetSchemaTable del
objeto DataReader es ms fcil de utilizar si slo desea recuperar
informacin de esquema de columna.

Puede utilizar el mtodo GetSchemaTable para crear un


nuevo DataTable basndose en un esquema de una
propiedad DataTableexistente mientras personaliza los nombres de
columna y otros atributos de columna. Para ver cdigo de ejemplo que
muestra cmo utilizar GetSchemaTable para definir una nueva tabla,
vea el tema "Ejemplos de Visual Studio: Run SQL Query de Fitch and
Mather 7.0" en la Ayuda en pantalla de Microsoft Visual Studio .NET.
Volver al principio

Recuperar el esquema de columna con el proveedor de OLE


DB .NET
En este ejemplo se muestra la informacin de esquema para las
columnas (propiedades de campo) de la tabla Employees de la base de
datos Northwind de SQL Server.
Tenga en cuenta que cuando utiliza el proveedor de OLE DB .NET usa el
mtodo GetSchemaTable del objeto OleDbDataReader.
1.

Inicie Visual Studio .NET y cree un nuevo proyecto de aplicacin de


consola de Visual Basic. Se crear Module1.vb de forma predeterminada.

2.

Abra la ventana Cdigo de Module1. Pegue el cdigo siguiente en


la parte superior de la ventana Cdigo, encima de la declaracinMdulo:

3.
4.

Imports System.Data

5.

Imports System.Data.OleDb

6.

En la ventana Cdigo, pegue el cdigo siguiente en el


procedimiento Sub Main:

7.
8.

Dim cn As New OleDbConnection()

9.

Dim cmd As New OleDbCommand()

10.

Dim schemaTable As DataTable

11.

Dim myReader As OleDbDataReader

12.

Dim myField As DataRow

13.

Dim myProperty As DataColumn

14.
15.
16.

'Abrir una conexin con la base de datos Northwind de SQL Server.


cn.ConnectionString = "Provider=SQLOLEDB;Data Source=server;User
ID=login;" & _

17.
18.

"Password=password;Initial Catalog=Northwind"
cn.Open()

19.
20.

'Recuperar registros de la tabla Employees en un DataReader.

21.

cmd.Connection = cn

22.

cmd.CommandText = "SELECT * FROM Employees"

23.

myReader = cmd.ExecuteReader(CommandBehavior.KeyInfo)

24.
25.

'Recuperar esquema de columna en un DataTable.

26.

schemaTable = myReader.GetSchemaTable()

27.
28.

'Para cada campo de la tabla...

29.

For Each myField In schemaTable.Rows

30.

'Para cada propiedad del campo...

31.

For Each myProperty In schemaTable.Columns

32.
33.

'Mostrar el nombre y el valor del campo.


Console.WriteLine(myProperty.ColumnName & " = " &
myField(myProperty).ToString())

34.

Next

35.

Console.WriteLine()

36.
37.

'Pausa.

38.

Console.ReadLine()

39.

Next

40.
41.

'Cerrar siempre los objetos DataReader y Connection.

42.

myReader.Close()

43.

cn.Close()

44.
Modifique los parmetros de la propiedad ConnectionString para
conectarse correctamente al equipo con SQL Server.
45.
Presione la tecla F5 para compilar y ejecutar el proyecto. Observe
que las propiedades de cada campo se muestran en la ventana Consola.
46.
Presione ENTRAR para desplazarse por la lista, finalizar la
aplicacin de consola y volver al Entorno de desarrollo integrado (IDE).
Volver al principio

Recuperar el esquema de columna con el proveedor de SQL


.NET
En este ejemplo se muestra la informacin de esquema para las
columnas (propiedades de campo) de la tabla Employees de la base de
datos Northwind de SQL Server.

Tenga en cuenta que cuando utiliza el proveedor de SQL .NET usa el


mtodo GetSchemaTable del objeto SqlDataReader.
1.

Inicie Visual Studio .NET y cree un nuevo proyecto de aplicacin de


consola de Visual Basic. Se crear Module1.vb de forma predeterminada.

2.

Abra la ventana Cdigo de Module1. Pegue el cdigo siguiente en


la parte superior de la ventana Cdigo, encima de la declaracinMdulo:

3.
4.

Imports System.Data

5.

Imports System.Data.SqlClient

6.

En la ventana Cdigo, pegue el cdigo siguiente en el


procedimiento Sub Main:

7.
8.

Dim cn As New SqlConnection()

9.

Dim cmd As New SqlCommand()

10.

Dim schemaTable As DataTable

11.

Dim myReader As SqlDataReader

12.

Dim myField As DataRow

13.

Dim myProperty As DataColumn

14.
15.

'Abrir una conexin con la base de datos Northwind de SQL Server.

16.

cn.ConnectionString = "Data Source=server;User Id=login;" & _

17.
18.

"Password=password;Initial Catalog=Northwind;"
cn.Open()

19.
20.

'Recuperar registros de la tabla Employees en un DataReader.

21.

cmd.Connection = cn

22.

cmd.CommandText = "SELECT * FROM Employees"

23.

myReader = cmd.ExecuteReader(CommandBehavior.KeyInfo)

24.
25.

'Recuperar esquema de columna en un DataTable.

26.

schemaTable = myReader.GetSchemaTable()

27.
28.

'Para cada campo de la tabla...

29.

For Each myField In schemaTable.Rows

30.

'Para cada propiedad del campo...

31.

For Each myProperty In schemaTable.Columns

32.

'Mostrar el nombre y el valor del campo.

33.

Console.WriteLine(myProperty.ColumnName & " = " &


myField(myProperty).ToString())

34.

Next

35.

Console.WriteLine()

36.
37.

'Pausa.

38.

Console.ReadLine()

39.

Next

40.
41.

'Cerrar siempre los objetos DataReader y Connection.

42.

myReader.Close()

43.

cn.Close()

Anda mungkin juga menyukai