8
Cómo recuperar el esquema de columna mediante el método GetSchemaTable del objeto DataReader y Visual Basic .NET Email Print Este artículo se publicó anteriormente con el número E310108 Para obtener una versión de este artículo para Microsoft Visual C# .NET, vea 310107 . Para obtener una versión de este artículo para Microsoft Visual C++ .NET, vea 309683 . Este artículo hace referencia al siguiente espacio de nombres de la Biblioteca de clases de Microsoft .NET Framework: System.Data.OleDb EN ESTA TAREA RESUMEN Cuándo utilizar el método GetSchemaTable Recuperar el esquema de columna Schema con el proveedor de OLE DB .NET Recuperar el esquema de columna Schema con el proveedor de SQL .NET REFERENCIAS Resumen En este artículo se muestra cómo utilizar el método GetSchemaTable del objeto DataReader en ADO.NET para recuperar información del esquema de columna. El esquema de una columna también se denomina propiedades de campo. La información del esquema de columna incluye la información siguiente acerca de la columna:

Cómo Recuperar El Esquema de Columna Mediante El Método GetSchemaTable Del Objeto DataReader y Visual Basic

Embed Size (px)

DESCRIPTION

Cómo Recuperar El Esquema de Columna Mediante El Método GetSchemaTable Del Objeto DataReader y Visual Basic

Citation preview

Page 1: Cómo Recuperar El Esquema de Columna Mediante El Método GetSchemaTable Del Objeto DataReader y Visual Basic

Cómo recuperar el esquema de columna mediante el método GetSchemaTable del objeto DataReader y Visual Basic .NET

Email

Print

Este artículo se publicó anteriormente con el número E310108

Para obtener una versión de este artículo para Microsoft Visual C# .NET, vea 310107. Para obtener una versión de este artículo para Microsoft Visual C++ .NET, vea 309683. 

Este artículo hace referencia al siguiente espacio de nombres de la Biblioteca de clases de Microsoft .NET Framework:

System.Data.OleDb

EN ESTA TAREA

RESUMEN

Cuándo utilizar el método GetSchemaTable Recuperar el esquema de columna Schema con el proveedor de OLE DB .NET Recuperar el esquema de columna Schema con el proveedor de SQL .NET

REFERENCIAS

ResumenEn este artículo se muestra cómo utilizar el método GetSchemaTable del objeto DataReader en ADO.NET para recuperar información del esquema de columna. El esquema de una columna también se denomina propiedades de campo. La información del esquema de columna incluye la información siguiente acerca de la columna:

Nombre

Tipo de datos

Tamaño

Page 2: Cómo Recuperar El Esquema de Columna Mediante El Método GetSchemaTable Del Objeto DataReader y Visual Basic

Si la columna es un campo de clave principal

Si la columna es un campo Autonumérico (AutoIncrement)

El método 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 IsAutoIncrement. 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 información 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.KeyInfo.

Puede utilizar el método GetSchemaTable con el proveedor de OLE DB .NET o con el proveedor de SQL .NET. El métodoOleDbDataReader.GetSchemaTable se asigna al método IColumnsRowset::GetColumnsRowset de OLE DB. El métodoSqlDataReader.GetSchemaTable no utiliza una capa del proveedor de OLE DB.

A menos que utilice explícitamente el método GetSchemaTable, DataReader no devuelve el esquema de columna. Además, si utilizaGetSchemaTable para recuperar el esquema de columna no podrá actualizar DataReader. DataReader siempre recupera una cadena de datos de avance de sólo lectura a partir de una base de datos.

Volver al principio

Cuándo utilizar el método GetSchemaTable

El objeto SqlConnection no permite recuperar información de esquema de SQL Server en un método análogo al métodoGetOleDbSchemaTable del objeto OleDbConnection. El método GetSchemaTable de la clase SqlDataReader proporciona una manera sencilla de obtener información de esquema de columna desde SQL Server.

Aunque el método GetOleDbSchemaTable del objeto OleDbConnection puede devolver información de esquema de

Page 3: Cómo Recuperar El Esquema de Columna Mediante El Método GetSchemaTable Del Objeto DataReader y Visual Basic

base de datos, tabla y columna, el método GetSchemaTable del objeto DataReader es más fácil de utilizar si sólo desea recuperar información de esquema de columna.

Puede utilizar el método GetSchemaTable para crear un nuevo DataTable basándose en un esquema de una propiedad DataTableexistente mientras personaliza los nombres de columna y otros atributos de columna. Para ver código de ejemplo que muestra cómo 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 información 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 método GetSchemaTable del objeto OleDbDataReader.

1. Inicie Visual Studio .NET y cree un nuevo proyecto de aplicación de consola de Visual Basic. Se creará Module1.vb de forma predeterminada.

2. Abra la ventana Código de Module1. Pegue el código siguiente en la parte superior de la ventana Código, encima de la declaraciónMódulo:

3.

4. Imports System.Data

5. Imports System.Data.OleDb

6. En la ventana Código, pegue el código siguiente en el procedimiento Sub Main:

7.

Page 4: Cómo Recuperar El Esquema de Columna Mediante El Método GetSchemaTable Del Objeto DataReader y Visual Basic

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. 'Abrir una conexión con la base de datos Northwind de SQL

Server.

16. cn.ConnectionString = "Provider=SQLOLEDB;Data Source=server;User

ID=login;" & _

17. "Password=password;Initial

Catalog=Northwind"

18. 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.

Page 5: Cómo Recuperar El Esquema de Columna Mediante El Método GetSchemaTable Del Objeto DataReader y Visual Basic

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()

44. Modifique los parámetros 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 aplicación 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 información 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 método GetSchemaTable del objeto SqlDataReader.

Page 6: Cómo Recuperar El Esquema de Columna Mediante El Método GetSchemaTable Del Objeto DataReader y Visual Basic

1. Inicie Visual Studio .NET y cree un nuevo proyecto de aplicación de consola de Visual Basic. Se creará Module1.vb de forma predeterminada.

2. Abra la ventana Código de Module1. Pegue el código siguiente en la parte superior de la ventana Código, encima de la declaraciónMódulo:

3.

4. Imports System.Data

5. Imports System.Data.SqlClient

6. En la ventana Código, pegue el código 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 conexión con la base de datos Northwind de SQL

Server.

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

17. "Password=password;Initial

Catalog=Northwind;"

18. cn.Open()

19.

Page 7: Cómo Recuperar El Esquema de Columna Mediante El Método GetSchemaTable Del Objeto DataReader y Visual Basic

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()

Page 8: Cómo Recuperar El Esquema de Columna Mediante El Método GetSchemaTable Del Objeto DataReader y Visual Basic