DbDataAdapter.FillSchema Método

Definición

Agrega DataTable a DataSet y configura el esquema para hacerlo coincidir con el del origen de datos.

Sobrecargas

FillSchema(DataSet, SchemaType, IDbCommand, String, CommandBehavior)

Agrega un elemento DataTable denominado "Table" para el elemento DataSet especificado y configura el esquema para que coincida con el origen de datos basado en el SchemaType.

FillSchema(DataTable, SchemaType, IDbCommand, CommandBehavior)

Configura el esquema de la tabla DataTable especificada en función del SchemaType, la cadena de comando y los valores de CommandBehavior especificados.

FillSchema(DataSet, SchemaType, String)

Agrega un elemento DataTable denominado "Table" para el elemento DataSet especificado y configura el esquema para que coincida con el del origen de datos basado en los elementos especificados SchemaType y DataTable.

FillSchema(DataTable, SchemaType)

Configura el esquema del elemento DataTable especificado en función del elemento SchemaType especificado.

FillSchema(DataSet, SchemaType)

Agrega una DataTable denominada "Table" para el DataSet especificado y configura el esquema para que coincida con el origen de datos basado en el SchemaType especificado.

FillSchema(DataSet, SchemaType, IDbCommand, String, CommandBehavior)

Source:
DbDataAdapter.cs
Source:
DbDataAdapter.cs
Source:
DbDataAdapter.cs

Agrega un elemento DataTable denominado "Table" para el elemento DataSet especificado y configura el esquema para que coincida con el origen de datos basado en el SchemaType.

protected:
 virtual cli::array <System::Data::DataTable ^> ^ FillSchema(System::Data::DataSet ^ dataSet, System::Data::SchemaType schemaType, System::Data::IDbCommand ^ command, System::String ^ srcTable, System::Data::CommandBehavior behavior);
protected virtual System.Data.DataTable[] FillSchema (System.Data.DataSet dataSet, System.Data.SchemaType schemaType, System.Data.IDbCommand command, string srcTable, System.Data.CommandBehavior behavior);
override this.FillSchema : System.Data.DataSet * System.Data.SchemaType * System.Data.IDbCommand * string * System.Data.CommandBehavior -> System.Data.DataTable[]
Protected Overridable Function FillSchema (dataSet As DataSet, schemaType As SchemaType, command As IDbCommand, srcTable As String, behavior As CommandBehavior) As DataTable()

Parámetros

dataSet
DataSet

DataSet que se debe rellenar con el esquema del origen de datos.

schemaType
SchemaType

Uno de los valores de SchemaType.

command
IDbCommand

Instrucción SELECT de SQL utilizada para recuperar las filas del origen de datos.

srcTable
String

Nombre de la tabla de origen que se utilizará para la asignación de tabla.

behavior
CommandBehavior

Uno de los valores de CommandBehavior.

Devoluciones

Matriz de objetos DataTable que contienen la información de esquema devuelta a partir del origen de datos.

Comentarios

El FillSchema método recupera el esquema del origen de datos mediante SelectCommand. El objeto de conexión asociado a SelectCommand debe ser válido, pero no es necesario abrirlo. Si se cierra la conexión antes FillSchema de llamar a , se abre para recuperar datos y, a continuación, se cierra. Si la conexión está abierta antes FillSchema de llamar a , permanece abierta.

Una FillSchema operación agrega un DataTable objeto al destino DataSet. A continuación, agrega columnas a DataColumnCollection de DataTabley configura las siguientes DataColumn propiedades si existen en el origen de datos:

FillSchema también configura las PrimaryKey propiedades y Constraints según las reglas siguientes:

  • Si devuelve una o varias columnas SelectCommandde clave principal , se usan como columnas de clave principal para .DataTable

  • Si no se devuelve ninguna columna de clave principal, pero las columnas únicas son , las columnas únicas se usan como clave principal si, y solo si, todas las columnas únicas no admiten valores NULL. Si alguna de las columnas acepta valores NULL, se agrega a UniqueConstraintConstraintCollection, pero la PrimaryKey propiedad no se establece.

  • Si se devuelven columnas de clave principal y columnas únicas, las columnas de clave principal se usan como columnas de clave principal para .DataTable

Tenga en cuenta que las claves principales y las restricciones únicas se agregan a según ConstraintCollection las reglas anteriores, pero no se agregan otros tipos de restricción.

Si se define un índice clúster único en una columna o columnas de una tabla de SQL Server y la restricción de clave principal se define en un conjunto independiente de columnas, se devolverán los nombres de las columnas del índice agrupado. Para devolver el nombre o los nombres de las columnas de clave principal, use una sugerencia de consulta con la instrucción SELECT que especifica el nombre del índice de clave principal. Para obtener más información sobre cómo especificar sugerencias de consulta, vea Sugerencias (Transact-SQL): consulta.

Si encuentra IDataAdapter columnas duplicadas al rellenar un DataTable, genera nombres para las columnas posteriores, utilizando el patrón "columnname1", "columnname2", "columnname3", etc. Si los datos entrantes contienen columnas sin nombre, se colocan en según el DataSet patrón "Column1", "Column2", etc. Cuando se agregan varios conjuntos de resultados al DataSet conjunto de resultados, cada conjunto de resultados se coloca en una tabla independiente. Los conjuntos de resultados adicionales se denominan anexando valores enteros al nombre de tabla especificado (por ejemplo, "Table", "Table1", "Table2", etc.). Si la aplicación usa nombres de columna y tabla, asegúrese de que no haya conflictos con estos patrones de nomenclatura.

El FillSchema método admite escenarios en los DataSet que contiene varios DataTable objetos cuyos nombres solo difieren por mayúsculas y minúsculas. En tales situaciones, FillSchema realiza una comparación que distingue mayúsculas de minúsculas para buscar la tabla correspondiente y crea una nueva tabla si no existe ninguna coincidencia exacta. El código de C# siguiente muestra este comportamiento.

DataSet dataset = new DataSet();  
dataset.Tables.Add("aaa");  
dataset.Tables.Add("AAA");  
adapter.FillSchema(dataset, "aaa"); // Fills the schema of "aaa", which already exists in the DataSet.  
adapter.FillSchema(dataset, "Aaa"); // Adds a new table called "Aaa".  

Si FillSchema se llama a y DataSet contiene solo uno DataTable cuyo nombre difiere solo por mayúsculas y minúsculas, se DataTable actualiza. En este escenario, la comparación no distingue mayúsculas de minúsculas. El código de C# siguiente muestra este comportamiento.

DataSet dataset = new DataSet();  
dataset.Tables.Add("aaa");  
adapter.FillSchema(dataset, "AAA"); // Fills the schema of table "aaa" because only one similarly named table is in the DataSet.  

FillSchema no devuelve ninguna fila. Use el Fill método para agregar filas a .DataTable

Nota

Al controlar instrucciones SQL por lotes que devuelven varios resultados, la implementación de FillSchema para el proveedor de datos de .NET Framework para OLE DB recupera información de esquema solo para el primer resultado. Para recuperar información de esquema para varios resultados, use Fill con el MissingSchemaAction establecido en AddWithKey.

Cuando se utiliza el método FillSchema, el proveedor de datos de .NET Framework para SQL Server agrega una cláusula FOR BROWSE a la instrucción que se está ejecutando. El usuario debe tener en cuenta los posibles efectos secundarios, como las interferencias con el uso de las instrucciones SET FMTONLY ON. Para obtener más información, vea SET FMTONLY (Transact-SQL).

Notas a los desarrolladores de herederos

Esta implementación del FillSchema(DataSet, SchemaType) método está protegida y está diseñada para que la use un proveedor de datos de .NET Framework.

Consulte también

Se aplica a

FillSchema(DataTable, SchemaType, IDbCommand, CommandBehavior)

Source:
DbDataAdapter.cs
Source:
DbDataAdapter.cs
Source:
DbDataAdapter.cs

Configura el esquema de la tabla DataTable especificada en función del SchemaType, la cadena de comando y los valores de CommandBehavior especificados.

protected:
 virtual System::Data::DataTable ^ FillSchema(System::Data::DataTable ^ dataTable, System::Data::SchemaType schemaType, System::Data::IDbCommand ^ command, System::Data::CommandBehavior behavior);
protected virtual System.Data.DataTable? FillSchema (System.Data.DataTable dataTable, System.Data.SchemaType schemaType, System.Data.IDbCommand command, System.Data.CommandBehavior behavior);
protected virtual System.Data.DataTable FillSchema (System.Data.DataTable dataTable, System.Data.SchemaType schemaType, System.Data.IDbCommand command, System.Data.CommandBehavior behavior);
override this.FillSchema : System.Data.DataTable * System.Data.SchemaType * System.Data.IDbCommand * System.Data.CommandBehavior -> System.Data.DataTable
Protected Overridable Function FillSchema (dataTable As DataTable, schemaType As SchemaType, command As IDbCommand, behavior As CommandBehavior) As DataTable

Parámetros

dataTable
DataTable

DataTable que se debe rellenar con el esquema del origen de datos.

schemaType
SchemaType

Uno de los valores de SchemaType.

command
IDbCommand

Instrucción SELECT de SQL utilizada para recuperar las filas del origen de datos.

behavior
CommandBehavior

Uno de los valores de CommandBehavior.

Devoluciones

Objeto DataTable que contiene la información de esquema devuelta desde el origen de datos.

Comentarios

El FillSchema método recupera el esquema del origen de datos mediante SelectCommand. El objeto de conexión asociado a SelectCommand debe ser válido, pero no es necesario abrirlo. Si se cierra la conexión antes FillSchema de llamar a , se abre para recuperar datos y, a continuación, se cierra. Si la conexión está abierta antes FillSchema de llamar a , permanece abierta.

Una FillSchema operación agrega un DataTable objeto al destino DataSet. A continuación, agrega columnas a DataColumnCollection de DataTabley configura las siguientes DataColumn propiedades si existen en el origen de datos:

FillSchema también configura las PrimaryKey propiedades y Constraints según las reglas siguientes:

  • Si devuelve una o varias columnas SelectCommandde clave principal , se usan como columnas de clave principal para .DataTable

  • Si no se devuelve ninguna columna de clave principal, pero las columnas únicas son , las columnas únicas se usan como clave principal si, y solo si, todas las columnas únicas no admiten valores NULL. Si alguna de las columnas acepta valores NULL, se agrega a UniqueConstraintConstraintCollection, pero la PrimaryKey propiedad no se establece.

  • Si se devuelven columnas de clave principal y columnas únicas, las columnas de clave principal se usan como columnas de clave principal para .DataTable

Tenga en cuenta que las claves principales y las restricciones únicas se agregan a según ConstraintCollection las reglas anteriores, pero no se agregan otros tipos de restricción.

Si se define un índice clúster único en una columna o columnas de una tabla de SQL Server y la restricción de clave principal se define en un conjunto independiente de columnas, se devolverán los nombres de las columnas del índice agrupado. Para devolver el nombre o los nombres de las columnas de clave principal, use una sugerencia de consulta con la instrucción SELECT que especifica el nombre del índice de clave principal. Para obtener más información sobre cómo especificar sugerencias de consulta, vea Sugerencias (Transact-SQL): consulta.

Si encuentra IDataAdapter columnas duplicadas al rellenar un DataTable, genera nombres para las columnas posteriores, utilizando el patrón "columnname1", "columnname2", "columnname3", etc. Si los datos entrantes contienen columnas sin nombre, se colocan en según el DataSet patrón "Column1", "Column2", etc. Cuando se agregan varios conjuntos de resultados al DataSet conjunto de resultados, cada conjunto de resultados se coloca en una tabla independiente. Los conjuntos de resultados adicionales se denominan anexando valores enteros al nombre de tabla especificado (por ejemplo, "Table", "Table1", "Table2", etc.). Si la aplicación usa nombres de columna y tabla, asegúrese de que no haya conflictos con estos patrones de nomenclatura.

FillSchema no devuelve ninguna fila. Use el Fill método para agregar filas a .DataTable

Nota

Al controlar instrucciones SQL por lotes que devuelven varios resultados, la implementación de FillSchema para el proveedor de datos de .NET Framework para OLE DB recupera información de esquema solo para el primer resultado. Para recuperar información de esquema para varios resultados, use Fill con el MissingSchemaAction establecido en AddWithKey.

Cuando se utiliza el método FillSchema, el proveedor de datos de .NET Framework para SQL Server agrega una cláusula FOR BROWSE a la instrucción que se está ejecutando. El usuario debe tener en cuenta los posibles efectos secundarios, como las interferencias con el uso de las instrucciones SET FMTONLY ON. Para obtener más información, vea SET FMTONLY (Transact-SQL).

Notas a los desarrolladores de herederos

Esta implementación del FillSchema(DataSet, SchemaType) método está protegida y está diseñada para que la use un proveedor de datos de .NET Framework.

Consulte también

Se aplica a

FillSchema(DataSet, SchemaType, String)

Source:
DbDataAdapter.cs
Source:
DbDataAdapter.cs
Source:
DbDataAdapter.cs

Agrega un elemento DataTable denominado "Table" para el elemento DataSet especificado y configura el esquema para que coincida con el del origen de datos basado en los elementos especificados SchemaType y DataTable.

public:
 cli::array <System::Data::DataTable ^> ^ FillSchema(System::Data::DataSet ^ dataSet, System::Data::SchemaType schemaType, System::String ^ srcTable);
public System.Data.DataTable[] FillSchema (System.Data.DataSet dataSet, System.Data.SchemaType schemaType, string srcTable);
override this.FillSchema : System.Data.DataSet * System.Data.SchemaType * string -> System.Data.DataTable[]
Public Function FillSchema (dataSet As DataSet, schemaType As SchemaType, srcTable As String) As DataTable()

Parámetros

dataSet
DataSet

DataSet en el que se va a insertar el esquema.

schemaType
SchemaType

Uno de los valores SchemaType que especifica cómo insertar el esquema.

srcTable
String

Nombre de la tabla de origen que se utilizará para la asignación de tabla.

Devoluciones

Referencia a una colección de objetos DataTable que se agregaron al DataSet.

Excepciones

No se encontró una tabla de origen desde la que se pueda obtener el esquema.

Ejemplos

En el ejemplo siguiente se usa la clase derivada, SqlDataAdapter, para rellenar con DataSet el esquema y devuelve .DataSet

public static DataSet GetCustomerData(string dataSetName,
    string connectionString)
{
    DataSet dataSet = new DataSet(dataSetName);

    using (SqlConnection connection = new SqlConnection(connectionString))
    {
        SqlDataAdapter adapter = new SqlDataAdapter(
            "SELECT CustomerID, CompanyName, ContactName FROM dbo.Customers", connection);

        DataTableMapping mapping = adapter.TableMappings.Add("Table", "Customers");
        mapping.ColumnMappings.Add("CompanyName", "Name");
        mapping.ColumnMappings.Add("ContactName", "Contact");

        connection.Open();

        adapter.FillSchema(dataSet, SchemaType.Source, "Customers");
        adapter.Fill(dataSet);

        return dataSet;
    }
}
Private Function GetCustomerData(ByVal dataSetName As String, _
    ByVal connectionString As String) As DataSet

    Dim dataSet As New DataSet(dataSetName)

    Using connection As SqlConnection = New SqlConnection(connectionString)

        Dim adapter As New SqlDataAdapter( _
           "SELECT CustomerID, CompanyName, ContactName FROM dbo.Customers", _
           connection)

        Dim mapping As DataTableMapping = adapter.TableMappings.Add( _
           "Table", "Customers")
        mapping.ColumnMappings.Add("CompanyName", "Name")
        mapping.ColumnMappings.Add("ContactName", "Contact")

        connection.Open()

        adapter.FillSchema(dataSet, SchemaType.Source, "Customers")
        adapter.Fill(dataSet)
        Return dataSet
    End Using
End Function

Comentarios

Este método recupera la información de esquema del origen de datos mediante SelectCommand.

Una FillSchema operación agrega un DataTable objeto al destino DataSet. A continuación, agrega columnas a DataColumnCollection de DataTabley configura las siguientes DataColumn propiedades si existen en el origen de datos:

FillSchema también configura las PrimaryKey propiedades y Constraints según las reglas siguientes:

  • Si una o varias columnas de clave principal se devuelven mediante SelectCommand, se usan como columnas de clave principal para .DataTable

  • Si no se devuelve ninguna columna de clave principal, pero las columnas únicas son , las columnas únicas se usan como clave principal si, y solo si, todas las columnas únicas son noullables. Si cualquiera de las columnas admite valores NULL, se agrega a UniqueConstraintConstraintCollection, pero la PrimaryKey propiedad no se establece.

  • Si se devuelven columnas de clave principal y columnas únicas, las columnas de clave principal se usan como columnas de clave principal para .DataTable

Tenga en cuenta que las claves principales y las restricciones únicas se agregan a según ConstraintCollection las reglas anteriores, pero no se agregan otros tipos de restricción.

Si se define un índice clúster único en una columna o columnas de una tabla SQL Server y la restricción de clave principal se define en un conjunto independiente de columnas, se devolverán los nombres de las columnas del índice agrupado. Para devolver el nombre o los nombres de las columnas de clave principal, use una sugerencia de consulta con la instrucción SELECT que especifica el nombre del índice de clave principal. Para obtener más información sobre cómo especificar sugerencias de consulta, vea Sugerencias (Transact-SQL): consulta.

La información de clave principal se usa durante Fill para buscar y reemplazar las filas cuyas columnas de clave coinciden. Si no es el comportamiento deseado, use Fill sin solicitar información de esquema.

DbDataAdapter Si encuentra columnas duplicadas al rellenar un DataTable, genera nombres para las columnas posteriores, utilizando el patrón "columnname1", "columnname2", "columnname3", etc. Si los datos entrantes contienen columnas sin nombre, se colocan en según DataSet el patrón "Column1", "Column2", etc. Cuando se agregan varios conjuntos de resultados al DataSet conjunto de resultados se coloca en una tabla independiente. Los conjuntos de resultados adicionales se denominan anexando valores enteros al nombre de tabla especificado (por ejemplo, "Table", "Table1", "Table2", etc.). Si la aplicación usa nombres de columna y tabla, asegúrese de que no haya conflictos con estos patrones de nomenclatura.

El FillSchema método admite escenarios en los que DataSet contiene varios DataTable objetos cuyos nombres solo difieren por mayúsculas y minúsculas. En tales situaciones, FillSchema realiza una comparación que distingue mayúsculas de minúsculas para buscar la tabla correspondiente y crea una nueva tabla si no existe ninguna coincidencia exacta. El siguiente código de C# ilustra este comportamiento.

DataSet dataset = new DataSet();  
dataset.Tables.Add("aaa");  
dataset.Tables.Add("AAA");  
adapter.FillSchema(dataset, "aaa"); // Fills the schema of "aaa", which already exists in the DataSet.  
adapter.FillSchema(dataset, "Aaa"); // Adds a new table called "Aaa".  

Si FillSchema se llama a y DataSet contiene solo uno DataTable cuyo nombre difiere solo por caso, se DataTable actualiza. En este escenario, la comparación no distingue mayúsculas de minúsculas. El siguiente código de C# ilustra este comportamiento.

DataSet dataset = new DataSet();  
dataset.Tables.Add("aaa");  
adapter.FillSchema(dataset, "AAA"); // Fills the schema of table "aaa" because only one similarly named table is in the DataSet.  

El IDbConnection objeto asociado al comando select debe ser válido, pero no es necesario abrirlo. IDbConnection Si se cierra antes FillSchema de llamar a , se abre para recuperar datos y, a continuación, se cierra. Si la conexión está abierta antes FillSchema de llamar a , se deja abierta.

Nota

Al controlar instrucciones SQL por lotes que devuelven varios resultados, la implementación de para el proveedor de FillSchema datos de .NET Framework para OLE DB recupera información de esquema solo para el primer resultado. Para recuperar información de esquema para varios resultados, use Fill con el MissingSchemaAction establecido en AddWithKey.

Cuando se utiliza el método FillSchema, el proveedor de datos de .NET Framework para SQL Server agrega una cláusula FOR BROWSE a la instrucción que se está ejecutando. El usuario debe tener en cuenta los posibles efectos secundarios, como las interferencias con el uso de las instrucciones SET FMTONLY ON. Para obtener más información, vea SET FMTONLY (Transact-SQL).

Consulte también

Se aplica a

FillSchema(DataTable, SchemaType)

Source:
DbDataAdapter.cs
Source:
DbDataAdapter.cs
Source:
DbDataAdapter.cs

Configura el esquema del elemento DataTable especificado en función del elemento SchemaType especificado.

public:
 System::Data::DataTable ^ FillSchema(System::Data::DataTable ^ dataTable, System::Data::SchemaType schemaType);
public System.Data.DataTable? FillSchema (System.Data.DataTable dataTable, System.Data.SchemaType schemaType);
public System.Data.DataTable FillSchema (System.Data.DataTable dataTable, System.Data.SchemaType schemaType);
override this.FillSchema : System.Data.DataTable * System.Data.SchemaType -> System.Data.DataTable
Public Function FillSchema (dataTable As DataTable, schemaType As SchemaType) As DataTable

Parámetros

dataTable
DataTable

DataTable que se debe rellenar con el esquema del origen de datos.

schemaType
SchemaType

Uno de los valores de SchemaType.

Devoluciones

DataTable que contiene información de esquema devuelta desde el origen de datos.

Ejemplos

En el ejemplo siguiente se usa la clase derivada , SqlDataAdapterpara rellenar un DataSet elemento con el esquema y devuelve un DataTable.

public static DataTable GetCustomerData(string dataSetName,
    string connectionString)
{
    DataTable table = new DataTable(dataSetName);

    using (SqlConnection connection = new SqlConnection(connectionString))
    {
        SqlDataAdapter adapter = new SqlDataAdapter(
            "SELECT CustomerID, CompanyName, ContactName FROM dbo.Customers", connection);

        DataTableMapping mapping = adapter.TableMappings.Add("Table", "Customers");
        mapping.ColumnMappings.Add("CompanyName", "Name");
        mapping.ColumnMappings.Add("ContactName", "Contact");

        connection.Open();

        adapter.FillSchema(table, SchemaType.Mapped);
        adapter.Fill(table);
        return table;
    }
}
Private Function GetCustomerData(ByVal dataTableName As String, _
    ByVal connectionString As String) As DataTable

    Dim table As New DataTable(dataTableName)

    Using connection As SqlConnection = New SqlConnection(connectionString)

        Dim adapter New SqlDataAdapter( _
           "SELECT CustomerID, CompanyName, ContactName FROM dbo.Customers", _
           connection)

        Dim mapping As DataTableMapping = adapter.TableMappings.Add( _
           "Table", "Customers")
        mapping.ColumnMappings.Add("CompanyName", "Name")
        mapping.ColumnMappings.Add("ContactName", "Contact")

        connection.Open()

        adapter.FillSchema(table, SchemaType.Mapped)
        adapter.Fill(table)
        Return table
    End Using
End Function

Comentarios

El FillSchema método recupera el esquema del origen de datos mediante SelectCommand. El objeto de conexión asociado a SelectCommand debe ser válido, pero no es necesario abrirlo. Si se cierra la conexión antes FillSchema de llamar a , se abre para recuperar datos y, a continuación, se cierra. Si la conexión está abierta antes FillSchema de llamar a , permanece abierta.

Una FillSchema operación devuelve un DataTableobjeto . A continuación, agrega columnas a DataColumnCollection de DataTabley configura las siguientes DataColumn propiedades si existen en el origen de datos:

FillSchema también configura las PrimaryKey propiedades y Constraints según las reglas siguientes:

  • Si ya se ha definido un PrimaryKey objeto para DataTableo contiene DataTable datos, la PrimaryKey propiedad no se establecerá.

  • Si una o varias columnas de clave principal se devuelven mediante SelectCommand, se usan como columnas de clave principal para .DataTable

  • Si no se devuelve ninguna columna de clave principal, pero las columnas únicas son , las columnas únicas se usan como clave principal si, y solo si, todas las columnas únicas son noullables. Si cualquiera de las columnas admite valores NULL, se agrega a UniqueConstraintConstraintCollection, pero la PrimaryKey propiedad no se establece.

  • Si se devuelven columnas de clave principal y columnas únicas, las columnas de clave principal se usan como columnas de clave principal para .DataTable

Tenga en cuenta que las claves principales y las restricciones únicas se agregan a según ConstraintCollection las reglas anteriores, pero no se agregan otros tipos de restricción. Este proceso puede requerir varios recorridos de ida y vuelta al servidor.

Si se define un índice clúster único en una columna o columnas de una tabla SQL Server y la restricción de clave principal se define en un conjunto independiente de columnas, se devolverán los nombres de las columnas del índice agrupado. Para devolver el nombre o los nombres de las columnas de clave principal, use una sugerencia de consulta con la instrucción SELECT que especifica el nombre del índice de clave principal. Para obtener más información sobre cómo especificar sugerencias de consulta, vea Sugerencias (Transact-SQL): consulta.

DbDataAdapter Si encuentra columnas duplicadas al rellenar un DataTable, genera nombres para las columnas posteriores, utilizando el patrón "columnname1", "columnname2", "columnname3", etc. Si los datos entrantes contienen columnas sin nombre, se colocan en según DataSet el patrón "Column1", "Column2", etc. Cuando se agregan varios conjuntos de resultados al DataSet conjunto de resultados se coloca en una tabla independiente. Los conjuntos de resultados adicionales se denominan anexando valores enteros al nombre de tabla especificado (por ejemplo, "Table", "Table1", "Table2", etc.). Si la aplicación usa nombres de columna y tabla, asegúrese de que no haya conflictos con estos patrones de nomenclatura.

FillSchema no devuelve ninguna fila. Use el Fill método para agregar filas a .DataTable

Nota

Al controlar instrucciones SQL por lotes que devuelven varios resultados, la implementación de para el proveedor de FillSchema datos de .NET Framework para OLE DB recupera información de esquema solo para el primer resultado. Para recuperar información de esquema para varios resultados, use Fill con el MissingSchemaAction establecido en AddWithKey.

Cuando se utiliza el método FillSchema, el proveedor de datos de .NET Framework para SQL Server agrega una cláusula FOR BROWSE a la instrucción que se está ejecutando. El usuario debe tener en cuenta los posibles efectos secundarios, como las interferencias con el uso de las instrucciones SET FMTONLY ON. Para obtener más información, vea SET FMTONLY (Transact-SQL).

Consulte también

Se aplica a

FillSchema(DataSet, SchemaType)

Source:
DbDataAdapter.cs
Source:
DbDataAdapter.cs
Source:
DbDataAdapter.cs

Agrega una DataTable denominada "Table" para el DataSet especificado y configura el esquema para que coincida con el origen de datos basado en el SchemaType especificado.

public:
 override cli::array <System::Data::DataTable ^> ^ FillSchema(System::Data::DataSet ^ dataSet, System::Data::SchemaType schemaType);
public override System.Data.DataTable[] FillSchema (System.Data.DataSet dataSet, System.Data.SchemaType schemaType);
override this.FillSchema : System.Data.DataSet * System.Data.SchemaType -> System.Data.DataTable[]
Public Overrides Function FillSchema (dataSet As DataSet, schemaType As SchemaType) As DataTable()

Parámetros

dataSet
DataSet

DataSet en el que se va a insertar el esquema.

schemaType
SchemaType

Uno de los valores SchemaType que especifica cómo insertar el esquema.

Devoluciones

Referencia a una colección de objetos DataTable que se agregaron al DataSet.

Implementaciones

Ejemplos

En el ejemplo siguiente se usa la clase derivada , SqlDataAdapterpara rellenar un DataSet elemento con el esquema y devuelve un DataSet.

public static DataSet GetCustomerData(string dataSetName,
    string connectionString)
{
    DataSet dataSet = new DataSet(dataSetName);

    using (SqlConnection connection = new SqlConnection(connectionString))
    {
        SqlDataAdapter adapter = new SqlDataAdapter(
            "SELECT CustomerID, CompanyName, ContactName FROM dbo.Customers", connection);

        DataTableMapping mapping = adapter.TableMappings.Add("Table", "Customers");
        mapping.ColumnMappings.Add("CompanyName", "Name");
        mapping.ColumnMappings.Add("ContactName", "Contact");

        connection.Open();

        adapter.FillSchema(dataSet, SchemaType.Mapped);
        adapter.Fill(dataSet);

        return dataSet;
    }
}
Private Function GetCustomerData(ByVal dataSetName As String, _
    ByVal connectionString As String) As DataSet

    Dim dataSet As New DataSet(dataSetName)

    Using connection As SqlConnection = New SqlConnection(connectionString)
        Dim adapter As New SqlDataAdapter( _
           "SELECT CustomerID, CompanyName, ContactName FROM dbo.Customers", _
           connection)

        Dim mapping As DataTableMapping = adapter.TableMappings.Add( _
           "Table", "Customers")
        mapping.ColumnMappings.Add("CompanyName", "Name")
        mapping.ColumnMappings.Add("ContactName", "Contact")

        connection.Open()

        adapter.FillSchema(dataSet, SchemaType.Mapped)
        adapter.Fill(dataSet)
        Return dataSet
    End Using
End Function

Comentarios

Este método recupera la información de esquema del origen de datos mediante SelectCommand.

Una FillSchema operación agrega un DataTable objeto al destino DataSet. A continuación, agrega columnas a DataColumnCollection de DataTabley configura las siguientes DataColumn propiedades si existen en el origen de datos:

FillSchema también configura las PrimaryKey propiedades y Constraints según las reglas siguientes:

  • Si una o varias columnas de clave principal se devuelven mediante SelectCommand, se usan como columnas de clave principal para .DataTable

  • Si no se devuelve ninguna columna de clave principal, pero las columnas únicas son , las columnas únicas se usan como clave principal si, y solo si, todas las columnas únicas son noullables. Si cualquiera de las columnas admite valores NULL, se agrega a UniqueConstraintConstraintCollection, pero la PrimaryKey propiedad no se establece.

  • Si se devuelven columnas de clave principal y columnas únicas, las columnas de clave principal se usan como columnas de clave principal para .DataTable

Tenga en cuenta que las claves principales y las restricciones únicas se agregan a según ConstraintCollection las reglas anteriores, pero no se agregan otros tipos de restricción.

Si se define un índice clúster único en una columna o columnas de una tabla SQL Server y la restricción de clave principal se define en un conjunto independiente de columnas, se devolverán los nombres de las columnas del índice agrupado. Para devolver el nombre o los nombres de las columnas de clave principal, use una sugerencia de consulta con la instrucción SELECT que especifica el nombre del índice de clave principal. Para obtener más información sobre cómo especificar sugerencias de consulta, vea Sugerencias (Transact-SQL): consulta.

La información de clave principal se usa durante Fill para buscar y reemplazar las filas cuyas columnas de clave coinciden. Si no es el comportamiento deseado, use Fill sin solicitar información de esquema.

IDataAdapter Si encuentra columnas duplicadas al rellenar un DataTable, genera nombres para las columnas posteriores, utilizando el patrón "columnname1", "columnname2", "columnname3", etc. Si los datos entrantes contienen columnas sin nombre, se colocan en según DataSet el patrón "Column1", "Column2", etc. Cuando se agregan varios conjuntos de resultados al DataSet conjunto de resultados se coloca en una tabla independiente. Los conjuntos de resultados adicionales se denominan anexando valores enteros al nombre de tabla especificado (por ejemplo, "Table", "Table1", "Table2", etc.). Si la aplicación usa nombres de columna y tabla, asegúrese de que no haya conflictos con estos patrones de nomenclatura.

El IDbConnection objeto asociado al comando select debe ser válido, pero no es necesario abrirlo. IDbConnection Si se cierra antes FillSchema de llamar a , se abre para recuperar datos y, a continuación, se cierra. Si la conexión está abierta antes FillSchema de llamar a , se deja abierta.

Nota

Al controlar instrucciones SQL por lotes que devuelven varios resultados, la implementación de para el proveedor de FillSchema datos de .NET Framework para OLE DB recupera información de esquema solo para el primer resultado. Para recuperar información de esquema para varios resultados, use Fill con el MissingSchemaAction establecido en AddWithKey.

Cuando se utiliza el método FillSchema, el proveedor de datos de .NET Framework para SQL Server agrega una cláusula FOR BROWSE a la instrucción que se está ejecutando. El usuario debe tener en cuenta los posibles efectos secundarios, como las interferencias con el uso de las instrucciones SET FMTONLY ON. Para obtener más información, vea SET FMTONLY (Transact-SQL).

Consulte también

Se aplica a