DbDataAdapter.FillSchema Método
Definición
Importante
Parte de la información hace referencia a la versión preliminar del producto, que puede haberse modificado sustancialmente antes de lanzar la versión definitiva. Microsoft no otorga ninguna garantía, explícita o implícita, con respecto a la información proporcionada aquí.
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
- 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:
AutoIncrement. Debe establecer AutoIncrementStep y AutoIncrementSeed por separado.
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
- 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:
AutoIncrement. Debe establecer AutoIncrementStep y AutoIncrementSeed por separado.
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
- 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:
AutoIncrement. Debe establecer AutoIncrementStep y AutoIncrementSeed por separado.
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
- 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:
AutoIncrement. Debe establecer AutoIncrementStep y AutoIncrementSeed por separado.
FillSchema también configura las PrimaryKey propiedades y Constraints según las reglas siguientes:
Si ya se ha definido un PrimaryKey para o contiene
DataTabledatos, laPrimaryKeypropiedadDataTableno se establecerá.Si una o varias columnas de clave principal las devuelve SelectCommand, se usan como columnas de clave principal para .
DataTableSi 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
PrimaryKeypropiedad .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
- 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:
AutoIncrement. Debe establecer AutoIncrementStep y AutoIncrementSeed por separado.
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).