Compartir por


DbDataAdapter.FillSchema Método

Definición

Agrega un DataTable objeto a DataSet y configura el esquema para que coincida con el del origen de datos.

Sobrecargas

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

Agrega un DataTable objeto al especificado DataSet y configura el esquema para que coincida con el del origen de datos basado en el especificado SchemaType.

FillSchema(DataTable, SchemaType, IDbCommand, CommandBehavior)

Configura el esquema del especificado DataTable en función de la cadena de comandos y CommandBehavior los valores especificadosSchemaType.

FillSchema(DataSet, SchemaType, String)

Agrega un DataTable objeto al especificado DataSet y configura el esquema para que coincida con el del origen de datos en función del especificado SchemaType y DataTable.

FillSchema(DataTable, SchemaType)

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

FillSchema(DataSet, SchemaType)

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

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

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

Agrega un DataTable objeto al especificado DataSet y configura el esquema para que coincida con el del origen de datos basado en el especificado 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);
[System.Diagnostics.CodeAnalysis.RequiresUnreferencedCode("IDataReader's (built from command) schema table types cannot be statically analyzed.")]
protected virtual System.Data.DataTable[] FillSchema(System.Data.DataSet dataSet, System.Data.SchemaType schemaType, System.Data.IDbCommand command, 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);
[<System.Diagnostics.CodeAnalysis.RequiresUnreferencedCode("IDataReader's (built from command) schema table types cannot be statically analyzed.")>]
override this.FillSchema : System.Data.DataSet * System.Data.SchemaType * System.Data.IDbCommand * string * System.Data.CommandBehavior -> System.Data.DataTable[]
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

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

schemaType
SchemaType

Uno de los SchemaType valores.

command
IDbCommand

Instrucción SELECT de SQL que se usa para recuperar filas del origen de datos.

srcTable
String

Nombre de la tabla de origen que se va a usar para la asignación de tablas.

behavior
CommandBehavior

Uno de los CommandBehavior valores.

Devoluciones

Matriz de DataTable objetos que contienen información de esquema devuelta desde el origen de datos.

Atributos

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 una o varias columnas de clave principal las devuelve 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 no son nullables. Si alguna de las columnas admite valores NULL, UniqueConstraint se agrega a ConstraintCollection, pero no se establece la PrimaryKey propiedad .

  • Si se devuelven las columnas de clave principal y las 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 ConstraintCollection según 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.

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, 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 DataSet los 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 siguiente código de C# 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 contiene DataSet 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# 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 del 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 AddWithKeyen .

Cuando se usa FillSchema, el proveedor de datos de .NET Framework para SQL Server anexa una cláusula FOR BROWSE a la instrucción que se ejecuta. El usuario debe tener en cuenta los posibles efectos secundarios, como la interferencia con el uso de 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 su uso por parte de 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
Source:
DbDataAdapter.cs
Source:
DbDataAdapter.cs

Configura el esquema del especificado DataTable en función de la cadena de comandos y CommandBehavior los valores especificadosSchemaType.

protected:
 virtual System::Data::DataTable ^ FillSchema(System::Data::DataTable ^ dataTable, System::Data::SchemaType schemaType, System::Data::IDbCommand ^ command, System::Data::CommandBehavior behavior);
[System.Diagnostics.CodeAnalysis.RequiresUnreferencedCode("IDataReader's (built from command) schema table types cannot be statically analyzed.")]
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);
[<System.Diagnostics.CodeAnalysis.RequiresUnreferencedCode("IDataReader's (built from command) schema table types cannot be statically analyzed.")>]
override this.FillSchema : System.Data.DataTable * System.Data.SchemaType * System.Data.IDbCommand * System.Data.CommandBehavior -> System.Data.DataTable
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

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

schemaType
SchemaType

Uno de los SchemaType valores.

command
IDbCommand

Instrucción SELECT de SQL que se usa para recuperar filas del origen de datos.

behavior
CommandBehavior

Uno de los CommandBehavior valores.

Devoluciones

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

Atributos

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 una o varias columnas de clave principal las devuelve 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 no son nullables. Si alguna de las columnas admite valores NULL, UniqueConstraint se agrega a ConstraintCollection, pero no se establece la PrimaryKey propiedad .

  • Si se devuelven las columnas de clave principal y las 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 ConstraintCollection según 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.

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, 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 del 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 AddWithKeyen .

Cuando se usa FillSchema, el proveedor de datos de .NET Framework para SQL Server anexa una cláusula FOR BROWSE a la instrucción que se ejecuta. El usuario debe tener en cuenta los posibles efectos secundarios, como la interferencia con el uso de 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 su uso por parte de 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
Source:
DbDataAdapter.cs
Source:
DbDataAdapter.cs

Agrega un DataTable objeto al especificado DataSet y configura el esquema para que coincida con el del origen de datos en función del especificado SchemaType y DataTable.

public:
 cli::array <System::Data::DataTable ^> ^ FillSchema(System::Data::DataSet ^ dataSet, System::Data::SchemaType schemaType, System::String ^ srcTable);
[System.Diagnostics.CodeAnalysis.RequiresUnreferencedCode("IDataReader's (built from adapter commands) schema table types cannot be statically analyzed.")]
public System.Data.DataTable[] FillSchema(System.Data.DataSet dataSet, System.Data.SchemaType schemaType, string srcTable);
public System.Data.DataTable[] FillSchema(System.Data.DataSet dataSet, System.Data.SchemaType schemaType, string srcTable);
[<System.Diagnostics.CodeAnalysis.RequiresUnreferencedCode("IDataReader's (built from adapter commands) schema table types cannot be statically analyzed.")>]
override this.FillSchema : System.Data.DataSet * System.Data.SchemaType * string -> System.Data.DataTable[]
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

que DataSet se va a insertar el esquema en.

schemaType
SchemaType

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

srcTable
String

Nombre de la tabla de origen que se va a usar para la asignación de tablas.

Devoluciones

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

Atributos

Excepciones

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

Ejemplos

En el ejemplo siguiente se usa la clase derivada , SqlDataAdapter, para 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.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 las devuelve 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 no son nullables. Si alguna de las columnas admite valores NULL, UniqueConstraint se agrega a ConstraintCollection, pero no se establece la PrimaryKey propiedad .

  • Si se devuelven las columnas de clave principal y las 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 ConstraintCollection según 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.

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, 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 DataSet los 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 siguiente código de C# 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 contiene DataSet 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# 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.

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 se abre la conexión antes FillSchema de llamar a , se deja abierta.

Nota:

Al controlar instrucciones SQL por lotes que devuelven varios resultados, la implementación del 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 AddWithKeyen .

Cuando se usa FillSchema, el proveedor de datos de .NET Framework para SQL Server anexa una cláusula FOR BROWSE a la instrucción que se ejecuta. El usuario debe tener en cuenta los posibles efectos secundarios, como la interferencia con el uso de 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
Source:
DbDataAdapter.cs
Source:
DbDataAdapter.cs

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

public:
 System::Data::DataTable ^ FillSchema(System::Data::DataTable ^ dataTable, System::Data::SchemaType schemaType);
[System.Diagnostics.CodeAnalysis.RequiresUnreferencedCode("IDataReader's (built from adapter commands) schema table types cannot be statically analyzed.")]
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);
[<System.Diagnostics.CodeAnalysis.RequiresUnreferencedCode("IDataReader's (built from adapter commands) schema table types cannot be statically analyzed.")>]
override this.FillSchema : System.Data.DataTable * System.Data.SchemaType -> System.Data.DataTable
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

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

schemaType
SchemaType

Uno de los SchemaType valores.

Devoluciones

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

Atributos

Ejemplos

En el ejemplo siguiente se usa la clase derivada , SqlDataAdapter, para 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 DataTable. 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 para o contiene DataTable datos, la PrimaryKey propiedad DataTableno se establecerá.

  • Si una o varias columnas de clave principal las devuelve 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 no son nullables. Si alguna de las columnas admite valores NULL, UniqueConstraint se agrega a ConstraintCollection, pero no se establece la PrimaryKey propiedad .

  • Si se devuelven las columnas de clave principal y las 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 ConstraintCollection según 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 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.

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, 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 del 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 AddWithKeyen .

Cuando se usa FillSchema, el proveedor de datos de .NET Framework para SQL Server anexa una cláusula FOR BROWSE a la instrucción que se ejecuta. El usuario debe tener en cuenta los posibles efectos secundarios, como la interferencia con el uso de 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
Source:
DbDataAdapter.cs
Source:
DbDataAdapter.cs

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

public:
 override cli::array <System::Data::DataTable ^> ^ FillSchema(System::Data::DataSet ^ dataSet, System::Data::SchemaType schemaType);
[System.Diagnostics.CodeAnalysis.RequiresUnreferencedCode("IDataReader's (built from adapter commands) schema table types cannot be statically analyzed.")]
public override 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);
[<System.Diagnostics.CodeAnalysis.RequiresUnreferencedCode("IDataReader's (built from adapter commands) schema table types cannot be statically analyzed.")>]
override this.FillSchema : System.Data.DataSet * System.Data.SchemaType -> System.Data.DataTable[]
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

que DataSet se va a insertar el esquema en.

schemaType
SchemaType

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

Devoluciones

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

Implementaciones

Atributos

Ejemplos

En el ejemplo siguiente se usa la clase derivada , SqlDataAdapter, para 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 las devuelve 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 no son nullables. Si alguna de las columnas admite valores NULL, UniqueConstraint se agrega a ConstraintCollection, pero no se establece la PrimaryKey propiedad .

  • Si se devuelven las columnas de clave principal y las 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 ConstraintCollection según 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.

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, 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 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 se abre la conexión antes FillSchema de llamar a , se deja abierta.

Nota:

Al controlar instrucciones SQL por lotes que devuelven varios resultados, la implementación del 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 AddWithKeyen .

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

Consulte también

Se aplica a