DbDataAdapter.Fill DbDataAdapter.Fill DbDataAdapter.Fill DbDataAdapter.Fill Method

Definizione

Riempie un DataSet o un DataTable.Fills a DataSet or a DataTable.

Overload

Fill(DataSet, Int32, Int32, String, IDbCommand, CommandBehavior) Fill(DataSet, Int32, Int32, String, IDbCommand, CommandBehavior) Fill(DataSet, Int32, Int32, String, IDbCommand, CommandBehavior)

Aggiunge o aggiorna righe in un intervallo specificato nell'oggetto DataSet affinché corrispondano a quelle nell'origine dati utilizzando i nomi, la stringa di comando e le funzioni di comando dell'oggetto DataSet e della tabella di origine.Adds or refreshes rows in a specified range in the DataSet to match those in the data source using the DataSet and source table names, command string, and command behavior.

Fill(DataTable[], Int32, Int32, IDbCommand, CommandBehavior) Fill(DataTable[], Int32, Int32, IDbCommand, CommandBehavior) Fill(DataTable[], Int32, Int32, IDbCommand, CommandBehavior) Fill(DataTable[], Int32, Int32, IDbCommand, CommandBehavior)

Aggiunge o aggiorna righe in un intervallo specificato nell'oggetto DataSet affinché corrispondano a quelle nell'origine dati mediante DataSet e i nomi di DataTable.Adds or refreshes rows in a specified range in the DataSet to match those in the data source using the DataSet and DataTable names.

Fill(DataSet, String, IDataReader, Int32, Int32) Fill(DataSet, String, IDataReader, Int32, Int32) Fill(DataSet, String, IDataReader, Int32, Int32)
Fill(DataSet, Int32, Int32, String) Fill(DataSet, Int32, Int32, String) Fill(DataSet, Int32, Int32, String)

Aggiunge o aggiorna righe in un intervallo specificato nell'oggetto DataSet affinché corrispondano a quelle nell'origine dati mediante DataSet e i nomi di DataTable.Adds or refreshes rows in a specified range in the DataSet to match those in the data source using the DataSet and DataTable names.

Fill(Int32, Int32, DataTable[]) Fill(Int32, Int32, DataTable[]) Fill(Int32, Int32, DataTable[]) Fill(Int32, Int32, DataTable[])

Aggiunge o aggiorna righe in un oggetto DataTable affinché corrispondano a quelle dell'origine dati, partendo dal record specificato e recuperando fino al numero massimo di record specificato.Adds or refreshes rows in a DataTable to match those in the data source starting at the specified record and retrieving up to the specified maximum number of records.

Fill(DataTable) Fill(DataTable) Fill(DataTable)

Aggiunge o aggiorna righe in un intervallo specificato nell'oggetto DataSet affinché corrispondano a quelle nell'origine dati mediante il nome di DataTable.Adds or refreshes rows in a specified range in the DataSet to match those in the data source using the DataTable name.

Fill(DataTable, IDataReader) Fill(DataTable, IDataReader) Fill(DataTable, IDataReader)
Fill(DataSet, String) Fill(DataSet, String) Fill(DataSet, String)

Aggiunge o aggiorna righe in un oggetto DataSet affinché corrispondano a quelle nell'origine dati mediante l'oggetto DataSet e i relativi nomi DataTable.Adds or refreshes rows in the DataSet to match those in the data source using the DataSet and DataTable names.

Fill(DataSet) Fill(DataSet) Fill(DataSet)

Aggiunge o aggiorna righe nell'oggetto DataSet.Adds or refreshes rows in the DataSet.

Fill(DataTable, IDbCommand, CommandBehavior) Fill(DataTable, IDbCommand, CommandBehavior) Fill(DataTable, IDbCommand, CommandBehavior)

Aggiunge o aggiorna righe in un oggetto DataTable affinché corrispondano a quelle dell'origine dati, utilizzando gli oggetti DataTable, IDbCommand e CommandBehavior specificati.Adds or refreshes rows in a DataTable to match those in the data source using the specified DataTable, IDbCommand and CommandBehavior.

Fill(DataSet, Int32, Int32, String, IDbCommand, CommandBehavior) Fill(DataSet, Int32, Int32, String, IDbCommand, CommandBehavior) Fill(DataSet, Int32, Int32, String, IDbCommand, CommandBehavior)

Aggiunge o aggiorna righe in un intervallo specificato nell'oggetto DataSet affinché corrispondano a quelle nell'origine dati utilizzando i nomi, la stringa di comando e le funzioni di comando dell'oggetto DataSet e della tabella di origine.Adds or refreshes rows in a specified range in the DataSet to match those in the data source using the DataSet and source table names, command string, and command behavior.

protected:
 virtual int Fill(System::Data::DataSet ^ dataSet, int startRecord, int maxRecords, System::String ^ srcTable, System::Data::IDbCommand ^ command, System::Data::CommandBehavior behavior);
protected virtual int Fill (System.Data.DataSet dataSet, int startRecord, int maxRecords, string srcTable, System.Data.IDbCommand command, System.Data.CommandBehavior behavior);
override this.Fill : System.Data.DataSet * int * int * string * System.Data.IDbCommand * System.Data.CommandBehavior -> int

Parametri

dataSet
DataSet DataSet DataSet DataSet

Oggetto DataSet in cui inserire i record e, se necessario, lo schema.A DataSet to fill with records and, if necessary, schema.

startRecord
Int32 Int32 Int32 Int32

Numero di record in base zero con cui iniziare.The zero-based record number to start with.

maxRecords
Int32 Int32 Int32 Int32

Numero massimo di record da recuperare.The maximum number of records to retrieve.

srcTable
String String String String

Nome della tabella di origine da utilizzare per il mapping della tabella.The name of the source table to use for table mapping.

command
IDbCommand IDbCommand IDbCommand IDbCommand

Istruzione SQL SELECT utilizzata per recuperare righe dall'origine dati.The SQL SELECT statement used to retrieve rows from the data source.

Restituisce

Numero di righe aggiunte o aggiornate correttamente nell'oggetto DataSet.The number of rows successfully added to or refreshed in the DataSet. Non sono incluse righe modificate da istruzioni che non restituiscono righe.This does not include rows affected by statements that do not return rows.

Eccezioni

Il parametro startRecord è minore di 0.The startRecord parameter is less than 0.

In alternativa-or- Il parametro maxRecords è minore di 0.The maxRecords parameter is less than 0.

Commenti

Il Fill metodo recupera le righe dall'origine dati tramite l'istruzione SELECT specificata da un oggetto associato SelectCommand proprietà.The Fill method retrieves rows from the data source using the SELECT statement specified by an associated SelectCommand property. L'oggetto di connessione associata all'istruzione SELECT deve essere valido, ma non devono essere aperte.The connection object associated with the SELECT statement must be valid, but it does not need to be open. Se la connessione viene chiusa prima Fill viene chiamato, verrà aperta per recuperare i dati, quindi chiuso.If the connection is closed before Fill is called, it is opened to retrieve data, then closed. Se la connessione viene aperta prima Fill viene chiamato, rimane aperto.If the connection is open before Fill is called, it remains open.

Il Fill operazione quindi le righe aggiunte alla destinazione DataTable gli oggetti nel DataSet, creando il DataTable oggetti se non esistono già.The Fill operation then adds the rows to destination DataTable objects in the DataSet, creating the DataTable objects if they do not already exist. Durante la creazione DataTable oggetti, il Fill crea in genere. solo i metadati dei nomi di colonna.When creating DataTable objects, the Fill operation normally creates only column name metadata. Tuttavia, se il MissingSchemaAction è impostata su AddWithKey, chiavi primarie appropriate e i vincoli vengono creati anche.However, if the MissingSchemaAction property is set to AddWithKey, appropriate primary keys and constraints are also created.

Se il DbDataAdapter rileva colonne duplicate durante la compilazione di un DataTable, genera nomi per le colonne successive, usando il modello "nomecolonna1", "columnname2", "columnname3" e così via.If the DbDataAdapter encounters duplicate columns while populating a DataTable, it generates names for the subsequent columns, using the pattern "columnname1", "columnname2", "columnname3", and so on. Se i dati in ingresso contengano colonne senza nome, vengono posizionati nel DataSet secondo il criterio "Column1", "Column2" e così via.If the incoming data contains unnamed columns, they are placed in the DataSet according to the pattern "Column1", "Column2", and so on. Quando vengono aggiunti più set di risultati per il DataSet ogni set di risultati viene inserito in una tabella separata.When multiple result sets are added to the DataSet each result set is placed in a separate table. Set di risultati aggiuntivi viene creato aggiungendo i valori integrali al nome della tabella specificato (ad esempio, "Table", "Table1", "Table2" e così via).Additional result sets are named by appending integral values to the specified table name (for example, "Table", "Table1", "Table2", and so on). Le applicazioni usando nomi di colonne e tabelle è necessario assicurarsi che non si verifichino conflitti con questi modelli di denominazione.Applications using column and table names should ensure that conflicts with these naming patterns does not occur.

Il Fill metodo supporta scenari in cui la DataSet contiene più DataTable oggetti i cui nomi differiscono solo per i casi.The Fill method supports scenarios where the DataSet contains multiple DataTable objects whose names differ only by case. In tali situazioni, Fill esegue un confronto tra maiuscole e minuscole per trovare la tabella corrispondente e crea una nuova tabella se viene trovata alcuna corrispondenza esatta.In such situations, Fill performs a case-sensitive comparison to find the corresponding table, and creates a new table if no exact match exists. Il codice C# seguente illustra questo comportamento.The following C# code illustrates this behavior.

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

Se Fill viene chiamato e il DataSet contiene una sola DataTable il cui nome differisce solo per i casi che DataTable viene aggiornato.If Fill is called and the DataSet contains only one DataTable whose name differs only by case, that DataTable is updated. In questo scenario, il confronto viene operata la distinzione.In this scenario, the comparison is case insensitive. Il codice C# seguente illustra questo comportamento.The following C# code illustrates this behavior.

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

È possibile usare la Fill metodo più volte sullo stesso DataTable.You can use the Fill method multiple times on the same DataTable. Se esiste una chiave primaria, le righe in ingresso vengono unite con le righe corrispondenti che esistano già.If a primary key exists, incoming rows are merged with matching rows that already exist. Se non esiste alcuna chiave primaria, le righe in ingresso vengono accodate al DataTable.If no primary key exists, incoming rows are appended to the DataTable.

Se SelectCommand restituisce i risultati di un OUTER JOIN, mediante DataAdapter non viene impostato un valore di PrimaryKey per l'oggetto DataTablerisultante.If the SelectCommand returns the results of an OUTER JOIN, the DataAdapter does not set a PrimaryKey value for the resulting DataTable. È necessario definire in modo esplicito la chiave primaria per garantire che le righe duplicate vengano risolte correttamente.You must explicitly define the primary key to ensure that duplicate rows are resolved correctly. Per altre informazioni, vedere definizione di chiavi primarie.For more information, see Defining Primary Keys.

Nota

Durante la gestione di batch di istruzioni SQL che restituiscono più risultati, l'implementazione di Fill e FillSchema per dati .NET Framework provider recupera le informazioni sullo schema per solo il primo risultato.When handling batch SQL statements that return multiple results, the implementation of Fill and FillSchema for a .NET Framework data provider retrieves schema information for only the first result.

Note per gli eredi

Questo overload del metodo di Fill(DataSet) metodo è protetto e deve essere utilizzato da un provider di dati .NET Framework.This overload of the Fill(DataSet) method is protected and is designed for use by a .NET Framework data provider.

Vedi anche

Fill(DataTable[], Int32, Int32, IDbCommand, CommandBehavior) Fill(DataTable[], Int32, Int32, IDbCommand, CommandBehavior) Fill(DataTable[], Int32, Int32, IDbCommand, CommandBehavior) Fill(DataTable[], Int32, Int32, IDbCommand, CommandBehavior)

Aggiunge o aggiorna righe in un intervallo specificato nell'oggetto DataSet affinché corrispondano a quelle nell'origine dati mediante DataSet e i nomi di DataTable.Adds or refreshes rows in a specified range in the DataSet to match those in the data source using the DataSet and DataTable names.

protected:
 virtual int Fill(cli::array <System::Data::DataTable ^> ^ dataTables, int startRecord, int maxRecords, System::Data::IDbCommand ^ command, System::Data::CommandBehavior behavior);
protected virtual int Fill (System.Data.DataTable[] dataTables, int startRecord, int maxRecords, System.Data.IDbCommand command, System.Data.CommandBehavior behavior);
override this.Fill : System.Data.DataTable[] * int * int * System.Data.IDbCommand * System.Data.CommandBehavior -> int
Protected Overridable Function Fill (dataTables As DataTable(), startRecord As Integer, maxRecords As Integer, command As IDbCommand, behavior As CommandBehavior) As Integer

Parametri

dataTables
DataTable[]

Oggetti DataTable da riempire dall'origine dati.The DataTable objects to fill from the data source.

startRecord
Int32 Int32 Int32 Int32

Numero di record in base zero con cui iniziare.The zero-based record number to start with.

maxRecords
Int32 Int32 Int32 Int32

Numero massimo di record da recuperare.The maximum number of records to retrieve.

command
IDbCommand IDbCommand IDbCommand IDbCommand

Enumerazione IDbCommand eseguita per riempire gli oggetti DataTable.The IDbCommand executed to fill the DataTable objects.

Restituisce

Numero di righe aggiunte o aggiornate nelle tabelle di dati.The number of rows added to or refreshed in the data tables.

Eccezioni

Tabella di origine non valida.The source table is invalid.

In alternativa-or- Connessione non valida.The connection is invalid.

Impossibile trovare la connessione.The connection could not be found.

Il parametro startRecord è minore di 0.The startRecord parameter is less than 0.

In alternativa-or- Il parametro maxRecords è minore di 0.The maxRecords parameter is less than 0.

Commenti

Oggetto maxRecords valore 0 consente di ottenere tutti i record rilevati dopo il record di avvio.A maxRecords value of 0 gets all records found after the start record. Se maxRecords è maggiore del numero di righe rimanenti, solo le righe rimanenti vengono restituite e viene generato alcun errore.If maxRecords is greater than the number of remaining rows, only the remaining rows are returned and no error is issued.

Il Fill metodo recupera i dati dall'origine dati tramite un'istruzione SELECT.The Fill method retrieves the data from the data source using a SELECT statement. Il IDbConnection oggetto associato all'istruzione SELECT deve essere valido, ma non devono essere aperte.The IDbConnection object associated with the SELECT statement must be valid, but it does not need to be open. Se il IDbConnection sia chiuso prima Fill viene chiamato, verrà aperta per recuperare i dati, quindi chiuso.If the IDbConnection is closed before Fill is called, it is opened to retrieve data, then closed. Se la connessione viene aperta prima Fill viene chiamato, rimane aperto.If the connection is open before Fill is called, it remains open.

Se un comando non restituisce alcuna riga, alcun tabelle non vengono aggiunte al DataSet, ma viene generata alcuna eccezione.If a command does not return any rows, no tables are added to the DataSet, but no exception is raised.

Se il DbDataAdapter oggetto rileva le colonne duplicate durante la compilazione di un DataTable, genererà i nomi per le colonne successive, usando il modello "nomecolonna1", "columnname2 ","columnname3 "e così via.If the DbDataAdapter object encounters duplicate columns while populating a DataTable, it will generate names for the subsequent columns, using the pattern "columnname1", "columnname2", "columnname3", and so on. Se i dati in ingresso contengano colonne senza nome, vengono posizionati nel DataSet secondo il criterio "Column1", "Column2" e così via.If the incoming data contains unnamed columns, they are placed in the DataSet according to the pattern "Column1", "Column2", and so on.

Quando la query specificata restituisce più risultati, ogni set di risultati viene inserito in una tabella separata.When the query specified returns multiple results, each result set is placed in a separate table. Set di risultati aggiuntivi viene creato aggiungendo i valori integrali al nome della tabella specificato (ad esempio, "Table", "Table1", "Table2" e così via).Additional result sets are named by appending integral values to the specified table name (for example, "Table", "Table1", "Table2", and so on). Poiché se fosse necessario elaborare una query insert seguita da una query select, per una query che non restituisce righe, viene creata alcuna tabella, la tabella creata per la query select potrebbe essere denominata "Table", perché è la prima tabella creata.Since no table is created for a query that does not return rows, if you were to process an insert query followed by a select query, the table created for the select query would be named "Table", because it is the first table created. Le applicazioni usando nomi di colonne e tabelle è necessario assicurarsi che non si verifichino conflitti con questi modelli di denominazione.Applications using column and table names should ensure that conflicts with these naming patterns does not occur.

Il Fill metodo supporta scenari in cui la DataSet contiene più DataTable oggetti i cui nomi differiscono solo per i casi.The Fill method supports scenarios where the DataSet contains multiple DataTable objects whose names differ only by case. In tali situazioni, Fill esegue un confronto tra maiuscole e minuscole per trovare la tabella corrispondente e crea una nuova tabella se viene trovata alcuna corrispondenza esatta.In such situations, Fill performs a case-sensitive comparison to find the corresponding table, and creates a new table if no exact match exists. Il codice C# seguente illustra questo comportamento.The following C# code illustrates this behavior.

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

Se Fill viene chiamato e il DataSet contiene una sola DataTable il cui nome differisce solo per i casi che DataTable viene aggiornato.If Fill is called and the DataSet contains only one DataTable whose name differs only by case, that DataTable is updated. In questo scenario, il confronto viene operata la distinzione.In this scenario, the comparison is case insensitive. Il codice C# seguente illustra questo comportamento.The following C# code illustrates this behavior.

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

Se un errore o un'eccezione si verifica durante la compilazione delle tabelle dei dati, le righe aggiunte prima del verificarsi dell'errore rimangono nelle tabelle di dati.If an error or an exception is encountered while populating the data tables, rows added prior to the occurrence of the error remain in the data tables. Il resto dell'operazione viene interrotta.The remainder of the operation is aborted.

Quando l'istruzione SELECT utilizzata per popolare il DataTable gli oggetti vengono restituiti più risultati, come un batch istruzione SQL, è necessario tenere presente quanto segue:When the SELECT statement used to populate the DataTable objects returns multiple results, such as a batch SQL statement, be aware of the following:

  • Durante l'elaborazione di più risultati da un'istruzione SQL, batch maxRecords si applica solo al primo risultato.When processing multiple results from a batch SQL statement, maxRecords only applies to the first result. Lo stesso vale per le righe contenenti i risultati con capitoli (Provider di dati .NET Framework per OLE DB solo).The same is true for rows containing chaptered results (.NET Framework Data Provider for OLE DB only). Il risultato di livello superiore è limitato dalla maxRecords, ma vengono aggiunte tutte le righe figlio.The top level result is limited by maxRecords, but all child rows are added.

  • Se uno dei risultati contiene un errore, vengono ignorati tutti i risultati successivi.If one of the results contains an error, all subsequent results are skipped.

Nota

Il DataSet non conterrà più il numero di record indicato da maxRecords.The DataSet will not contain more than the number of records indicated by maxRecords. Tuttavia, l'intero set di risultati generato dalla query viene comunque restituito dal server.However, the entire resultset generated by the query is still returned from the server.

Note per gli eredi

Quando si esegue l'override Fill(DataSet) in una classe derivata, accertarsi di chiamare la classe di base Fill(DataSet) (metodo).When overriding Fill(DataSet) in a derived class, be sure to call the base class's Fill(DataSet) method.

Vedi anche

Fill(DataSet, String, IDataReader, Int32, Int32) Fill(DataSet, String, IDataReader, Int32, Int32) Fill(DataSet, String, IDataReader, Int32, Int32)

protected:
 virtual int Fill(System::Data::DataSet ^ dataSet, System::String ^ srcTable, System::Data::IDataReader ^ dataReader, int startRecord, int maxRecords);
protected virtual int Fill (System.Data.DataSet dataSet, string srcTable, System.Data.IDataReader dataReader, int startRecord, int maxRecords);
override this.Fill : System.Data.DataSet * string * System.Data.IDataReader * int * int -> int

Parametri

startRecord
Int32 Int32 Int32 Int32
maxRecords
Int32 Int32 Int32 Int32

Restituisce

Fill(DataSet, Int32, Int32, String) Fill(DataSet, Int32, Int32, String) Fill(DataSet, Int32, Int32, String)

Aggiunge o aggiorna righe in un intervallo specificato nell'oggetto DataSet affinché corrispondano a quelle nell'origine dati mediante DataSet e i nomi di DataTable.Adds or refreshes rows in a specified range in the DataSet to match those in the data source using the DataSet and DataTable names.

public:
 int Fill(System::Data::DataSet ^ dataSet, int startRecord, int maxRecords, System::String ^ srcTable);
public int Fill (System.Data.DataSet dataSet, int startRecord, int maxRecords, string srcTable);
override this.Fill : System.Data.DataSet * int * int * string -> int

Parametri

dataSet
DataSet DataSet DataSet DataSet

Oggetto DataSet in cui inserire i record e, se necessario, lo schema.A DataSet to fill with records and, if necessary, schema.

startRecord
Int32 Int32 Int32 Int32

Numero di record in base zero con cui iniziare.The zero-based record number to start with.

maxRecords
Int32 Int32 Int32 Int32

Numero massimo di record da recuperare.The maximum number of records to retrieve.

srcTable
String String String String

Nome della tabella di origine da utilizzare per il mapping della tabella.The name of the source table to use for table mapping.

Restituisce

Numero di righe aggiunte o aggiornate correttamente nell'oggetto DataSet.The number of rows successfully added to or refreshed in the DataSet. Non sono incluse righe modificate da istruzioni che non restituiscono righe.This does not include rows affected by statements that do not return rows.

Eccezioni

Tabella di origine non valida.The source table is invalid.

In alternativa-or- Connessione non valida.The connection is invalid.

Impossibile trovare la connessione.The connection could not be found.

Il parametro startRecord è minore di 0.The startRecord parameter is less than 0.

In alternativa-or- Il parametro maxRecords è minore di 0.The maxRecords parameter is less than 0.

Esempi

L'esempio seguente usa la classe derivata, OleDbDataAdapter, per riempire un DataSet con 15 righe, a partire dalla riga 10, dai categorie tabella.The following example uses the derived class, OleDbDataAdapter, to fill a DataSet with 15 rows, beginning at row 10, from the Categories table. Questo esempio si presuppone che sia stato creato un OleDbDataAdapter e un DataSet.This example assumes that you have created an OleDbDataAdapter and a DataSet.

public void GetRecords() 
{
    // ...
    // create dataSet and adapter
    // ...
    adapter.Fill(dataSet,9,15,"Categories");
}
Public Sub GetRecords()
    ' ...
    ' create dataSet and adapter
    ' ...
    adapter.Fill(dataSet, 9, 15, "Categories")
End Sub

Commenti

Oggetto maxRecords valore 0 consente di ottenere tutti i record rilevati dopo il record di avvio.A maxRecords value of 0 gets all records found after the start record. Se maxRecords è maggiore del numero di righe rimanenti, solo le righe rimanenti vengono restituite e viene generato alcun errore.If maxRecords is greater than the number of remaining rows, only the remaining rows are returned, and no error is issued.

Se un'istruzione che restituisce più risultati, il comando select corrispondente Fill si applica solo maxRecords per il primo risultato.If the corresponding select command is a statement returning multiple results, Fill only applies maxRecords to the first result.

Il Fill metodo recupera i dati dall'origine dati tramite un'istruzione SELECT.The Fill method retrieves the data from the data source using a SELECT statement. Il IDbConnection oggetto associato all'istruzione SELECT deve essere valido, ma non devono essere aperte.The IDbConnection object associated with the SELECT statement must be valid, but it does not need to be open. Se il IDbConnection sia chiuso prima Fill viene chiamato, verrà aperto per recuperare i dati, quindi viene chiusa.If the IDbConnection is closed before Fill is called, it is opened to retrieve data and then closed. Se la connessione viene aperta prima Fill viene chiamato, rimane aperto.If the connection is open before Fill is called, it remains open.

Se un comando non restituisce alcuna riga, alcun tabelle non vengono aggiunte al DataSet, ma viene generata alcuna eccezione.If a command does not return any rows, no tables are added to the DataSet, but no exception is raised.

Se il DbDataAdapter oggetto rileva le colonne duplicate durante la compilazione di un DataTable, genererà i nomi per le colonne successive, usando il modello "nomecolonna1", "columnname2 ","columnname3 "e così via.If the DbDataAdapter object encounters duplicate columns while populating a DataTable, it will generate names for the subsequent columns, using the pattern "columnname1", "columnname2", "columnname3", and so on. Se i dati in ingresso contengano colonne senza nome, vengono posizionati nel DataSet secondo il criterio "Column1", "Column2" e così via.If the incoming data contains unnamed columns, they are placed in the DataSet according to the pattern "Column1", "Column2", and so on.

Quando la query specificata restituisce più risultati, ogni set di risultati viene inserito in una tabella separata.When the query specified returns multiple results, each result set is placed in a separate table. Set di risultati aggiuntivi viene creato aggiungendo i valori integrali al nome della tabella specificato (ad esempio, "Table", "Table1", "Table2" e così via).Additional result sets are named by appending integral values to the specified table name (for example, "Table", "Table1", "Table2", and so on). Poiché nessuna tabella viene creata per una query che non restituisce righe, se si elabora una query insert seguita da una query select, la tabella creata per la query select è denominata "Table", perché è la prima tabella creata.Because no table is created for a query that does not return rows, if you process an insert query followed by a select query, the table created for the select query is named "Table", because it is the first table created. Le applicazioni usando nomi di colonne e tabelle è necessario assicurarsi che non si verifichino conflitti con questi modelli di denominazione.Applications using column and table names should ensure that conflicts with these naming patterns does not occur.

Il Fill metodo supporta scenari in cui la DataSet contiene più DataTable oggetti i cui nomi differiscono solo per i casi.The Fill method supports scenarios where the DataSet contains multiple DataTable objects whose names differ only by case. In tali situazioni, Fill esegue un confronto tra maiuscole e minuscole per trovare la tabella corrispondente e crea una nuova tabella se viene trovata alcuna corrispondenza esatta.In such situations, Fill performs a case-sensitive comparison to find the corresponding table, and creates a new table if no exact match exists. Il codice C# seguente illustra questo comportamento.The following C# code illustrates this behavior.

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

Se Fill viene chiamato e il DataSet contiene una sola DataTable il cui nome differisce solo per i casi che DataTable viene aggiornato.If Fill is called and the DataSet contains only one DataTable whose name differs only by case, that DataTable is updated. In questo scenario, il confronto viene operata la distinzione.In this scenario, the comparison is case insensitive. Il codice C# seguente illustra questo comportamento.The following C# code illustrates this behavior.

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

Se un errore o un'eccezione si verifica durante la compilazione delle tabelle dei dati, le righe aggiunte prima del verificarsi dell'errore rimangono nelle tabelle di dati.If an error or an exception is encountered while populating the data tables, rows added prior to the occurrence of the error remain in the data tables. Il resto dell'operazione viene interrotta.The remainder of the operation is aborted.

Quando l'istruzione SELECT utilizzata per popolare il DataSet restituiti più risultati, ad esempio batch di istruzioni SQL, tenere presente quanto segue:When the SELECT statement used to populate the DataSet returns multiple results, such as batch SQL statements, be aware of the following:

  • Durante l'elaborazione di più risultati da un'istruzione SQL, batch maxRecords si applica solo al primo risultato.When processing multiple results from a batch SQL statement, maxRecords only applies to the first result. Lo stesso vale per le righe contenenti i risultati con capitoli (Provider di dati .NET Framework per OLE DB solo).The same is true for rows containing chaptered results (.NET Framework Data Provider for OLE DB only). Il risultato di livello superiore è limitato dalla maxRecords, ma vengono aggiunte tutte le righe figlio.The top level result is limited by maxRecords, but all child rows are added.

  • Se uno dei risultati contiene un errore, tutti i risultati successivi vengono ignorati e non aggiunti al DataSet.If one of the results contains an error, all subsequent results are skipped and not added to the DataSet.

Quando si usa successive Fill chiamate per aggiornare il contenuto del DataSet, è necessario soddisfare due condizioni:When using subsequent Fill calls to refresh the contents of the DataSet, two conditions must be met:

  1. L'istruzione SQL deve corrispondere a quella inizialmente utilizzato per popolare il DataSet.The SQL statement should match the one initially used to populate the DataSet.

  2. Il chiave informazioni sulla colonna deve essere presente.The Key column information must be present.

Se le informazioni sulla chiave primarie è presente, tutte le righe duplicate verranno risolte e apparire una sola volta nel DataTable che corrisponde alla DataSet.If primary key information is present, any duplicate rows will be reconciled and only appear once in the DataTable that corresponds to the DataSet. Informazioni sulla chiave primarie può essere impostate tramite FillSchema, specificando il PrimaryKey proprietà del DataTable, oppure impostando il MissingSchemaAction proprietà AddWithKey.Primary key information may be set either through FillSchema, by specifying the PrimaryKey property of the DataTable, or by setting the MissingSchemaAction property to AddWithKey.

Se SelectCommand restituisce i risultati di un OUTER JOIN, mediante DataAdapter non viene impostato un valore di PrimaryKey per l'oggetto DataTablerisultante.If the SelectCommand returns the results of an OUTER JOIN, the DataAdapter does not set a PrimaryKey value for the resulting DataTable. È necessario definire in modo esplicito la chiave primaria per garantire che le righe duplicate vengano risolte correttamente.You must explicitly define the primary key to ensure that duplicate rows are resolved correctly. Per altre informazioni, vedere definizione di chiavi primarie.For more information, see Defining Primary Keys.

Nota

Durante la gestione di batch di istruzioni SQL che restituiscono più risultati, l'implementazione di FillSchema per il Provider di dati .NET Framework per OLE DB consente di recuperare informazioni sullo schema per solo il primo risultato.When handling batch SQL statements that return multiple results, the implementation of FillSchema for the .NET Framework Data Provider for OLE DB retrieves schema information for only the first result. Per recuperare informazioni sullo schema per più risultati, usare Fill con il MissingSchemaAction impostato su AddWithKey.To retrieve schema information for multiple results, use Fill with the MissingSchemaAction set to AddWithKey.

Nota

Il DataSet non conterrà più il numero di record indicato da maxRecords.The DataSet will not contain more than the number of records indicated by maxRecords. Tuttavia, l'intero set di risultati generato dalla query viene comunque restituito dal server.However, the entire result set generated by the query is still returned from the server.

Note per gli eredi

Quando si esegue l'override Fill(DataSet) in una classe derivata, accertarsi di chiamare la classe di base Fill(DataSet) (metodo).When overriding Fill(DataSet) in a derived class, be sure to call the base class's Fill(DataSet) method.

Vedi anche

Fill(Int32, Int32, DataTable[]) Fill(Int32, Int32, DataTable[]) Fill(Int32, Int32, DataTable[]) Fill(Int32, Int32, DataTable[])

Aggiunge o aggiorna righe in un oggetto DataTable affinché corrispondano a quelle dell'origine dati, partendo dal record specificato e recuperando fino al numero massimo di record specificato.Adds or refreshes rows in a DataTable to match those in the data source starting at the specified record and retrieving up to the specified maximum number of records.

public:
 int Fill(int startRecord, int maxRecords, ... cli::array <System::Data::DataTable ^> ^ dataTables);
public int Fill (int startRecord, int maxRecords, params System.Data.DataTable[] dataTables);
override this.Fill : int * int * System.Data.DataTable[] -> int
Public Function Fill (startRecord As Integer, maxRecords As Integer, ParamArray dataTables As DataTable()) As Integer

Parametri

startRecord
Int32 Int32 Int32 Int32

Numero di record in base zero con cui iniziare.The zero-based record number to start with.

maxRecords
Int32 Int32 Int32 Int32

Numero massimo di record da recuperare.The maximum number of records to retrieve.

dataTables
DataTable[]

Oggetti DataTable da riempire dall'origine dati.The DataTable objects to fill from the data source.

Restituisce

Numero di righe aggiunte o aggiornate correttamente nell'oggetto DataTable.The number of rows successfully added to or refreshed in the DataTable. Questo valore non include le righe modificate da istruzioni che non restituiscono righe.This value does not include rows affected by statements that do not return rows.

Commenti

Il Fill metodo recupera le righe dall'origine dati tramite l'istruzione SELECT specificata da un oggetto associato SelectCommand proprietà.The Fill method retrieves rows from the data source using the SELECT statement specified by an associated SelectCommand property. L'oggetto di connessione associata all'istruzione SELECT deve essere valido, ma non devono essere aperte.The connection object associated with the SELECT statement must be valid, but it does not need to be open. Se la connessione viene chiusa prima Fill viene chiamato, viene aperto per recuperare i dati e quindi viene chiusa.If the connection is closed before Fill is called, it is opened to retrieve data, and then it is closed. Se la connessione viene aperta prima Fill viene chiamato, rimane aperto.If the connection is open before Fill is called, it remains open.

Il Fill operazione quindi le righe aggiunte alla destinazione DataTable gli oggetti nel DataSet, creando il DataTable oggetti se non esistono già.The Fill operation then adds the rows to destination DataTable objects in the DataSet, creating the DataTable objects if they do not already exist. Durante la creazione DataTable oggetti, il Fill crea in genere. solo i metadati dei nomi di colonna.When creating DataTable objects, the Fill operation normally creates only column name metadata. Tuttavia, se il MissingSchemaAction è impostata su AddWithKey, chiavi primarie appropriate e i vincoli vengono creati anche.However, if the MissingSchemaAction property is set to AddWithKey, appropriate primary keys and constraints are also created.

Se SelectCommand restituisce i risultati di un OUTER JOIN, mediante DataAdapter non viene impostato un valore di PrimaryKey per l'oggetto DataTablerisultante.If the SelectCommand returns the results of an OUTER JOIN, the DataAdapter does not set a PrimaryKey value for the resulting DataTable. È necessario definire in modo esplicito la chiave primaria per garantire che le righe duplicate vengano risolte correttamente.You must explicitly define the primary key to ensure that duplicate rows are resolved correctly. Per altre informazioni, vedere definizione di chiavi primarie.For more information, see Defining Primary Keys.

Se l'adattatore dati di rileva le colonne duplicate durante la compilazione un DataTable, genera nomi per le colonne successive, tramite il modello "nomecolonna1", "nomecolonna2", "columnname3" e così via.If the data adapter encounters duplicate columns while populating a DataTable, it generates names for the subsequent columns, using the pattern "columnname1", "columnname2", "columnname3", and so on. Se i dati in ingresso contengano colonne senza nome, vengono posizionati nel DataSet secondo il criterio "Column1", "Column2" e così via.If the incoming data contains unnamed columns, they are placed in the DataSet according to the pattern "Column1", "Column2", and so on. Quando vengono aggiunti più set di risultati per il DataSet, ogni set di risultati viene inserito in una tabella separata.When multiple result sets are added to the DataSet, each result set is placed in a separate table. Set di risultati aggiuntivi viene creato aggiungendo i valori integrali al nome della tabella specificato (ad esempio, "Table", "Table1", "Table2" e così via).Additional result sets are named by appending integral values to the specified table name (for example, "Table", "Table1", "Table2", and so on). Le applicazioni usando nomi di colonne e tabelle è necessario assicurarsi che non si verifichino conflitti con questi modelli di denominazione.Applications using column and table names should ensure that conflicts with these naming patterns does not occur.

Quando l'istruzione SELECT utilizzata per popolare la DataSet restituisce più risultati, ad esempio un batch di istruzioni SQL, se uno dei risultati contiene un errore, tutti i risultati successivi vengono ignorati e non aggiunti al DataSet.When the SELECT statement used to populate the DataSet returns multiple results, such as a batch SQL statements, if one of the results contains an error, all subsequent results are skipped and not added to the DataSet.

È possibile usare la Fill metodo più volte sullo stesso DataTable.You can use the Fill method multiple times on the same DataTable. Se esiste una chiave primaria, le righe in ingresso vengono unite con le righe corrispondenti che esistano già.If a primary key exists, incoming rows are merged with matching rows that already exist. Se non esiste alcuna chiave primaria, le righe in ingresso vengono accodate al DataTable.If no primary key exists, incoming rows are appended to the DataTable.

Nota

Durante la gestione di batch di istruzioni SQL che restituiscono più risultati, l'implementazione di FillSchema per il Provider di dati .NET Framework per OLE DB consente di recuperare informazioni sullo schema per solo il primo risultato.When handling batch SQL statements that return multiple results, the implementation of FillSchema for the .NET Framework Data Provider for OLE DB retrieves schema information for only the first result. Per recuperare informazioni sullo schema per più risultati, usare Fill con il MissingSchemaAction impostato su AddWithKey.To retrieve schema information for multiple results, use Fill with the MissingSchemaAction set to AddWithKey.

Vedi anche

Fill(DataTable) Fill(DataTable) Fill(DataTable)

Aggiunge o aggiorna righe in un intervallo specificato nell'oggetto DataSet affinché corrispondano a quelle nell'origine dati mediante il nome di DataTable.Adds or refreshes rows in a specified range in the DataSet to match those in the data source using the DataTable name.

public:
 int Fill(System::Data::DataTable ^ dataTable);
public int Fill (System.Data.DataTable dataTable);
override this.Fill : System.Data.DataTable -> int

Parametri

dataTable
DataTable DataTable DataTable DataTable

Nome di DataTable da utilizzare per il mapping di tabella.The name of the DataTable to use for table mapping.

Restituisce

Numero di righe aggiunte o aggiornate correttamente nell'oggetto DataSet.The number of rows successfully added to or refreshed in the DataSet. Non sono incluse righe modificate da istruzioni che non restituiscono righe.This does not include rows affected by statements that do not return rows.

Eccezioni

Commenti

Il Fill metodo recupera le righe dall'origine dati tramite l'istruzione SELECT specificata da un oggetto associato SelectCommand proprietà.The Fill method retrieves rows from the data source using the SELECT statement specified by an associated SelectCommand property. L'oggetto di connessione associata all'istruzione SELECT deve essere valido, ma non devono essere aperte.The connection object associated with the SELECT statement must be valid, but it does not need to be open. Se la connessione viene chiusa prima Fill viene chiamato, verrà aperta per recuperare i dati, quindi chiuso.If the connection is closed before Fill is called, it is opened to retrieve data, then closed. Se la connessione viene aperta prima Fill viene chiamato, rimane aperto.If the connection is open before Fill is called, it remains open.

Il Fill operazione quindi le righe aggiunte alla destinazione DataTable gli oggetti nel DataSet, creando il DataTable oggetti se non esistono già.The Fill operation then adds the rows to destination DataTable objects in the DataSet, creating the DataTable objects if they do not already exist. Durante la creazione DataTable oggetti, il Fill crea in genere. solo i metadati dei nomi di colonna.When creating DataTable objects, the Fill operation normally creates only column name metadata. Tuttavia, se il MissingSchemaAction è impostata su AddWithKey, chiavi primarie appropriate e i vincoli vengono creati anche.However, if the MissingSchemaAction property is set to AddWithKey, appropriate primary keys and constraints are also created.

Se il DbDataAdapter rileva colonne duplicate durante la compilazione di un DataTable, genera nomi per le colonne successive, usando il modello "nomecolonna1", "columnname2", "columnname3" e così via.If the DbDataAdapter encounters duplicate columns while populating a DataTable, it generates names for the subsequent columns, using the pattern "columnname1", "columnname2", "columnname3", and so on. Se i dati in ingresso contengano colonne senza nome, vengono posizionati nel DataSet secondo il criterio "Column1", "Column2" e così via.If the incoming data contains unnamed columns, they are placed in the DataSet according to the pattern "Column1", "Column2", and so on. Quando vengono aggiunti più set di risultati per il DataSet ogni set di risultati viene inserito in una tabella separata.When multiple result sets are added to the DataSet each result set is placed in a separate table.

Eseguire l'overload del Fill che accetta DataTable come un parametro ottiene solo il primo risultato.The overload of Fill that takes DataTable as a parameter only obtains the first result. Usare un overload del Fill che accetta DataSet come parametro per ottenere più risultati.Use an overload of Fill that takes DataSet as a parameter to obtain multiple results.

Il Fill metodo supporta scenari in cui la DataSet contiene più DataTable oggetti i cui nomi differiscono solo per i casi.The Fill method supports scenarios where the DataSet contains multiple DataTable objects whose names differ only by case. In tali situazioni, Fill esegue un confronto tra maiuscole e minuscole per trovare la tabella corrispondente e crea una nuova tabella se viene trovata alcuna corrispondenza esatta.In such situations, Fill performs a case-sensitive comparison to find the corresponding table, and creates a new table if no exact match exists. Il codice C# seguente illustra questo comportamento.The following C# code illustrates this behavior.

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

Se Fill viene chiamato e il DataSet contiene una sola DataTable il cui nome differisce solo per i casi che DataTable viene aggiornato.If Fill is called and the DataSet contains only one DataTable whose name differs only by case, that DataTable is updated. In questo scenario, il confronto viene operata la distinzione.In this scenario, the comparison is case insensitive. Il codice C# seguente illustra questo comportamento.The following C# code illustrates this behavior.

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

È possibile usare la Fill metodo più volte sullo stesso DataTable.You can use the Fill method multiple times on the same DataTable. Se esiste una chiave primaria, le righe in ingresso vengono unite con le righe corrispondenti che esistano già.If a primary key exists, incoming rows are merged with matching rows that already exist. Se non esiste alcuna chiave primaria, le righe in ingresso vengono accodate al DataTable.If no primary key exists, incoming rows are appended to the DataTable.

Se SelectCommand restituisce i risultati di un OUTER JOIN, mediante DataAdapter non viene impostato un valore di PrimaryKey per l'oggetto DataTablerisultante.If the SelectCommand returns the results of an OUTER JOIN, the DataAdapter does not set a PrimaryKey value for the resulting DataTable. È necessario definire in modo esplicito la chiave primaria per garantire che le righe duplicate vengano risolte correttamente.You must explicitly define the primary key to ensure that duplicate rows are resolved correctly. Per altre informazioni, vedere definizione di chiavi primarie.For more information, see Defining Primary Keys.

Nota

Durante la gestione di batch di istruzioni SQL che restituiscono più risultati, l'implementazione di Fill e FillSchema per dati .NET Framework provider recupera le informazioni sullo schema per solo il primo risultato.When handling batch SQL statements that return multiple results, the implementation of Fill and FillSchema for a .NET Framework data provider retrieves schema information for only the first result.

Note per gli eredi

Questo overload del metodo di Fill(DataSet) metodo è protetto e deve essere utilizzato da un provider di dati .NET Framework.This overload of the Fill(DataSet) method is protected and is designed for use by a .NET Framework data provider.

Vedi anche

Fill(DataTable, IDataReader) Fill(DataTable, IDataReader) Fill(DataTable, IDataReader)

protected:
 virtual int Fill(System::Data::DataTable ^ dataTable, System::Data::IDataReader ^ dataReader);
protected virtual int Fill (System.Data.DataTable dataTable, System.Data.IDataReader dataReader);
override this.Fill : System.Data.DataTable * System.Data.IDataReader -> int

Parametri

Restituisce

Fill(DataSet, String) Fill(DataSet, String) Fill(DataSet, String)

Aggiunge o aggiorna righe in un oggetto DataSet affinché corrispondano a quelle nell'origine dati mediante l'oggetto DataSet e i relativi nomi DataTable.Adds or refreshes rows in the DataSet to match those in the data source using the DataSet and DataTable names.

public:
 int Fill(System::Data::DataSet ^ dataSet, System::String ^ srcTable);
public int Fill (System.Data.DataSet dataSet, string srcTable);
override this.Fill : System.Data.DataSet * string -> int

Parametri

dataSet
DataSet DataSet DataSet DataSet

Oggetto DataSet in cui inserire i record e, se necessario, lo schema.A DataSet to fill with records and, if necessary, schema.

srcTable
String String String String

Nome della tabella di origine da utilizzare per il mapping della tabella.The name of the source table to use for table mapping.

Restituisce

Numero di righe aggiunte o aggiornate correttamente nell'oggetto DataSet.The number of rows successfully added to or refreshed in the DataSet. Non sono incluse righe modificate da istruzioni che non restituiscono righe.This does not include rows affected by statements that do not return rows.

Eccezioni

Tabella di origine non valida.The source table is invalid.

Esempi

L'esempio seguente usa la classe derivata OleDbDataAdapter, per riempire un DataSet con le righe dalla tabella categories.The following example uses the derived class, OleDbDataAdapter, to fill a DataSet with rows from the categories table. Questo esempio si presuppone che sia stato creato un OleDbDataAdapter e un DataSet.This example assumes that you have created an OleDbDataAdapter and a DataSet.

public void GetRecords() 
{
    // ...
    // create dataSet and adapter
    // ...
    adapter.Fill(dataSet, "Categories");
}
Public Sub GetRecords()
    ' ...
    ' create dataSet and adapter
    ' ...
    adapter.Fill(dataSet, "Categories")
End Sub

Commenti

Il Fill metodo recupera i dati dall'origine dati tramite un'istruzione SELECT.The Fill method retrieves the data from the data source using a SELECT statement. Il IDbConnection oggetto associato al comando select deve essere valido, ma non devono essere aperte.The IDbConnection object associated with the select command must be valid, but it does not need to be open. Se il IDbConnection sia chiuso prima Fill viene chiamato, verrà aperta per recuperare i dati, quindi chiuso.If the IDbConnection is closed before Fill is called, it is opened to retrieve data, then closed. Se la connessione viene aperta prima Fill viene chiamato, rimane aperto.If the connection is open before Fill is called, it remains open.

Se un comando non restituisce alcuna riga, alcun tabelle non vengono aggiunte al DataSet, e viene generata alcuna eccezione.If a command does not return any rows, no tables are added to the DataSet, and no exception is raised.

Se il DbDataAdapter oggetto rileva le colonne duplicate durante la compilazione un DataTable, genererà i nomi per le colonne successive, tramite il modello "nomecolonna1", "nomecolonna2", "columnname3" e così via.If the DbDataAdapter object encounters duplicate columns while populating a DataTable, it will generate names for the subsequent columns, using the pattern "columnname1", "columnname2", "columnname3", and so on. Se i dati in ingresso contengano colonne senza nome, vengono posizionati nel DataSet secondo il criterio "Column1", "Column2" e così via.If the incoming data contains unnamed columns, they are placed in the DataSet according to the pattern "Column1", "Column2", and so on.

Quando la query specificata restituisce più risultati, ogni set di risultati viene inserito in una tabella separata.When the query specified returns multiple results, each result set is placed in a separate table. Set di risultati aggiuntivi viene creato aggiungendo i valori integrali al nome della tabella specificato (ad esempio, "Table", "Table1", "Table2" e così via).Additional result sets are named by appending integral values to the specified table name (for example, "Table", "Table1", "Table2", and so on). Poiché se fosse necessario elaborare una query insert seguita da una query select, per una query che non restituisce righe, viene creata alcuna tabella, la tabella creata per la query select potrebbe essere denominata "Table", perché è la prima tabella creata.Since no table is created for a query that does not return rows, if you were to process an insert query followed by a select query, the table created for the select query would be named "Table", because it is the first table created. Le applicazioni usando nomi di colonne e tabelle è necessario assicurarsi che non si verifichino conflitti con questi modelli di denominazione.Applications using column and table names should ensure that conflicts with these naming patterns does not occur.

Il Fill metodo supporta scenari in cui la DataSet contiene più DataTable oggetti i cui nomi differiscono solo per i casi.The Fill method supports scenarios where the DataSet contains multiple DataTable objects whose names differ only by case. In tali situazioni, Fill esegue un confronto tra maiuscole e minuscole per trovare la tabella corrispondente e crea una nuova tabella se viene trovata alcuna corrispondenza esatta.In such situations, Fill performs a case-sensitive comparison to find the corresponding table, and creates a new table if no exact match exists. Il codice C# seguente illustra questo comportamento.The following C# code illustrates this behavior.

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

Se Fill viene chiamato e il DataSet contiene una sola DataTable il cui nome differisce solo per i casi che DataTable viene aggiornato.If Fill is called and the DataSet contains only one DataTable whose name differs only by case, that DataTable is updated. In questo scenario, il confronto viene operata la distinzione.In this scenario, the comparison is case insensitive. Il codice C# seguente illustra questo comportamento.The following C# code illustrates this behavior.

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

Se un errore o un'eccezione si verifica durante la compilazione delle tabelle dei dati, le righe aggiunte prima del verificarsi dell'errore rimangono nelle tabelle di dati.If an error or an exception is encountered while populating the data tables, rows added prior to the occurrence of the error remain in the data tables. Il resto dell'operazione viene interrotta.The remainder of the operation is aborted.

Quando l'istruzione SELECT utilizzata per popolare il DataSet restituisce più risultati, come un batch istruzione SQL, è necessario tenere presente quanto segue:When the SELECT statement used to populate the DataSet returns multiple results, such as a batch SQL statement, be aware of the following:

  • Se uno dei risultati contiene un errore, tutti i risultati successivi vengono ignorati e non aggiunti al DataSet.If one of the results contains an error, all subsequent results are skipped and not added to the DataSet.

Quando si usa successive Fill chiamate per aggiornare il contenuto del DataSet, è necessario soddisfare due condizioni:When using subsequent Fill calls to refresh the contents of the DataSet, two conditions must be met:

  1. L'istruzione SQL deve corrispondere a quella inizialmente utilizzato per popolare il DataSet.The SQL statement should match the one initially used to populate the DataSet.

  2. Il chiave informazioni sulla colonna deve essere presente.The Key column information must be present. Se le informazioni sulla chiave primarie è presente, tutte le righe duplicate sono risolte e apparire una sola volta nel DataTable che corrisponde alla DataSet.If primary key information is present, any duplicate rows are reconciled and only appear once in the DataTable that corresponds to the DataSet. Informazioni sulla chiave primarie può essere impostate tramite FillSchema, specificando il PrimaryKey proprietà del DataTable, oppure impostando il MissingSchemaAction proprietà AddWithKey.Primary key information may be set either through FillSchema, by specifying the PrimaryKey property of the DataTable, or by setting the MissingSchemaAction property to AddWithKey.

Se SelectCommand restituisce i risultati di un OUTER JOIN, mediante DataAdapter non viene impostato un valore di PrimaryKey per l'oggetto DataTablerisultante.If the SelectCommand returns the results of an OUTER JOIN, the DataAdapter does not set a PrimaryKey value for the resulting DataTable. È necessario definire in modo esplicito la chiave primaria per garantire che le righe duplicate vengano risolte correttamente.You must explicitly define the primary key to ensure that duplicate rows are resolved correctly. Per altre informazioni, vedere definizione di chiavi primarie.For more information, see Defining Primary Keys.

Nota

Durante la gestione di batch di istruzioni SQL che restituiscono più risultati, l'implementazione di FillSchema per il Provider di dati .NET Framework per OLE DB consente di recuperare informazioni sullo schema per solo il primo risultato.When handling batch SQL statements that return multiple results, the implementation of FillSchema for the .NET Framework Data Provider for OLE DB retrieves schema information for only the first result. Per recuperare informazioni sullo schema per più risultati, usare Fill con il MissingSchemaAction impostato su AddWithKey.To retrieve schema information for multiple results, use Fill with the MissingSchemaAction set to AddWithKey.

Note per gli eredi

Quando si esegue l'override Fill(DataSet) in una classe derivata, accertarsi di chiamare la classe di base Fill(DataSet) (metodo).When overriding Fill(DataSet) in a derived class, be sure to call the base class's Fill(DataSet) method.

Vedi anche

Fill(DataSet) Fill(DataSet) Fill(DataSet)

Aggiunge o aggiorna righe nell'oggetto DataSet.Adds or refreshes rows in the DataSet.

public:
 override int Fill(System::Data::DataSet ^ dataSet);
public override int Fill (System.Data.DataSet dataSet);
override this.Fill : System.Data.DataSet -> int

Parametri

dataSet
DataSet DataSet DataSet DataSet

Oggetto DataSet in cui inserire i record e, se necessario, lo schema.A DataSet to fill with records and, if necessary, schema.

Restituisce

Numero di righe aggiunte o aggiornate correttamente nell'oggetto DataSet.The number of rows successfully added to or refreshed in the DataSet. Non sono incluse righe modificate da istruzioni che non restituiscono righe.This does not include rows affected by statements that do not return rows.

Implementazioni

Commenti

Il Fill metodo recupera i dati dall'origine dati tramite un'istruzione SELECT.The Fill method retrieves the data from the data source using a SELECT statement. Il IDbConnection oggetto associato al comando select deve essere valido, ma non devono essere aperte.The IDbConnection object associated with the select command must be valid, but it does not need to be open. Se il IDbConnection sia chiuso prima Fill viene chiamato, verrà aperto per recuperare i dati, quindi viene chiusa.If the IDbConnection is closed before Fill is called, it is opened to retrieve data and then closed. Se la connessione viene aperta prima Fill viene chiamato, rimane aperto.If the connection is open before Fill is called, it remains open.

Se un errore o un'eccezione si verifica durante la compilazione delle tabelle dei dati, le righe aggiunte prima del verificarsi dell'errore rimangono nelle tabelle di dati.If an error or an exception is encountered while populating the data tables, rows added prior to the occurrence of the error remain in the data tables. Il resto dell'operazione viene interrotta.The remainder of the operation is aborted.

Se un comando non restituisce alcuna riga, alcun tabelle non vengono aggiunte al DataSet, e viene generata alcuna eccezione.If a command does not return any rows, no tables are added to the DataSet, and no exception is raised.

Se il DbDataAdapter oggetto rileva le colonne duplicate durante il popolamento di una DataTable, genera nomi per le colonne successive usando il modello "columnname1","columnname2", " columnname3" e così via.If the DbDataAdapter object encounters duplicate columns while populating a DataTable, it generates names for the subsequent columns using the pattern "columnname1", "columnname2", "columnname3", and so on. Se i dati in ingresso contengano colonne senza nome, vengono posizionati nel DataSet secondo il criterio "Column1", "Column2" e così via.If the incoming data contains unnamed columns, they are placed in the DataSet according to the pattern "Column1", "Column2", and so on.

Quando la query specificata restituisce più risultati, il set di risultati per ogni riga restituzione di query viene inserito in una tabella separata.When the query specified returns multiple results, the result set for each row returning query is placed in a separate table. Set di risultati aggiuntivi viene creato aggiungendo i valori integrali al nome della tabella specificato (ad esempio, "Table", "Table1", "Table2" e così via).Additional result sets are named by appending integral values to the specified table name (for example, "Table", "Table1", "Table2", and so on). Poiché nessuna tabella viene creata per una query che non restituisce righe, se si elabora una query insert seguita da una query select, la tabella creata per la query select è denominata "Table" perché è la prima tabella creata.Because no table is created for a query that does not return rows, if you process an insert query followed by a select query, the table created for the select query is named "Table" because it is the first table created. Le applicazioni usando nomi di colonne e tabelle è necessario assicurarsi che non si verifichino conflitti con questi modelli di denominazione.Applications using column and table names should ensure that conflicts with these naming patterns does not occur.

Quando l'istruzione SELECT utilizzata per popolare la DataSet restituiti più risultati, ad esempio batch di istruzioni SQL, se uno dei risultati contiene un errore, tutti i risultati successivi vengono ignorati e non vengono aggiunti al DataSet.When the SELECT statement used to populate the DataSet returns multiple results, such as batch SQL statements, if one of the results contains an error, all subsequent results are skipped and are not added to the DataSet.

Quando si usa successive Fill chiamate per aggiornare il contenuto del DataSet, è necessario soddisfare due condizioni:When using subsequent Fill calls to refresh the contents of the DataSet, two conditions must be met:

  1. L'istruzione SQL deve corrispondere a quella inizialmente utilizzato per popolare il DataSet.The SQL statement should match the one initially used to populate the DataSet.

  2. Il chiave informazioni sulla colonna deve essere presente.The Key column information must be present.

Se le informazioni sulla chiave primarie è presente, tutte le righe duplicate sono risolte e apparire una sola volta nel DataTable che corrisponde alla DataSet.If primary key information is present, any duplicate rows are reconciled and only appear once in the DataTable that corresponds to the DataSet. Informazioni sulla chiave primarie può essere impostate tramite FillSchema, specificando il PrimaryKey proprietà del DataTable, oppure impostando il MissingSchemaAction proprietà AddWithKey.Primary key information may be set either through FillSchema, by specifying the PrimaryKey property of the DataTable, or by setting the MissingSchemaAction property to AddWithKey.

Se SelectCommand restituisce i risultati di un OUTER JOIN, mediante DataAdapter non viene impostato un valore di PrimaryKey per l'oggetto DataTablerisultante.If the SelectCommand returns the results of an OUTER JOIN, the DataAdapter does not set a PrimaryKey value for the resulting DataTable. È necessario definire in modo esplicito la chiave primaria per garantire che le righe duplicate vengano risolte correttamente.You must explicitly define the primary key to ensure that duplicate rows are resolved correctly. Per altre informazioni, vedere definizione di chiavi primarie.For more information, see Defining Primary Keys.

Nota

Durante la gestione di batch di istruzioni SQL che restituiscono più risultati, l'implementazione di FillSchema per il Provider di dati .NET Framework per OLE DB consente di recuperare informazioni sullo schema per solo il primo risultato.When handling batch SQL statements that return multiple results, the implementation of FillSchema for the .NET Framework Data Provider for OLE DB retrieves schema information for only the first result. Per recuperare informazioni sullo schema per più risultati, usare Fill con il MissingSchemaAction impostato su AddWithKey.To retrieve schema information for multiple results, use Fill with the MissingSchemaAction set to AddWithKey.

Vedi anche

Fill(DataTable, IDbCommand, CommandBehavior) Fill(DataTable, IDbCommand, CommandBehavior) Fill(DataTable, IDbCommand, CommandBehavior)

Aggiunge o aggiorna righe in un oggetto DataTable affinché corrispondano a quelle dell'origine dati, utilizzando gli oggetti DataTable, IDbCommand e CommandBehavior specificati.Adds or refreshes rows in a DataTable to match those in the data source using the specified DataTable, IDbCommand and CommandBehavior.

protected:
 virtual int Fill(System::Data::DataTable ^ dataTable, System::Data::IDbCommand ^ command, System::Data::CommandBehavior behavior);
protected virtual int Fill (System.Data.DataTable dataTable, System.Data.IDbCommand command, System.Data.CommandBehavior behavior);
override this.Fill : System.Data.DataTable * System.Data.IDbCommand * System.Data.CommandBehavior -> int

Parametri

dataTable
DataTable DataTable DataTable DataTable

Oggetto DataTable in cui inserire i record e, se necessario, lo schema.A DataTable to fill with records and, if necessary, schema.

command
IDbCommand IDbCommand IDbCommand IDbCommand

Istruzione SQL SELECT utilizzata per recuperare righe dall'origine dati.The SQL SELECT statement used to retrieve rows from the data source.

Restituisce

Numero di righe aggiunte o aggiornate correttamente nell'oggetto DataTable.The number of rows successfully added to or refreshed in the DataTable. Non sono incluse righe modificate da istruzioni che non restituiscono righe.This does not include rows affected by statements that do not return rows.

Commenti

Il Fill metodo recupera le righe dall'origine dati tramite l'istruzione SELECT specificata da un oggetto associato SelectCommand proprietà.The Fill method retrieves rows from the data source using the SELECT statement specified by an associated SelectCommand property. L'oggetto di connessione associata all'istruzione SELECT deve essere valido, ma non devono essere aperte.The connection object associated with the SELECT statement must be valid, but it does not need to be open. Se la connessione viene chiusa prima Fill viene chiamato, verrà aperto per recuperare i dati, quindi viene chiusa.If the connection is closed before Fill is called, it is opened to retrieve data and then closed. Se la connessione viene aperta prima Fill viene chiamato, rimane aperto.If the connection is open before Fill is called, it remains open.

Il Fill aggiunge quindi le righe nella destinazione specificata DataTable dell'oggetto nel DataSet, creando il DataTable dell'oggetto se non già esiste.The Fill operation then adds the rows to the specified destination DataTable object in the DataSet, creating the DataTable object if it does not already exist. Quando si crea una DataTable oggetti, il Fill crea in genere. solo i metadati dei nomi di colonna.When creating a DataTable object, the Fill operation normally creates only column name metadata. Tuttavia, se il MissingSchemaAction è impostata su AddWithKey, chiavi primarie appropriate e i vincoli vengono creati anche.However, if the MissingSchemaAction property is set to AddWithKey, appropriate primary keys and constraints are also created.

Se il DbDataAdapter oggetto rileva le colonne duplicate durante la compilazione di un DataTable, genererà i nomi per le colonne successive, usando il modello "nomecolonna1", "columnname2 ","columnname3 "e così via.If the DbDataAdapter object encounters duplicate columns while populating a DataTable, it will generate names for the subsequent columns, using the pattern "columnname1", "columnname2", "columnname3", and so on. Se i dati in ingresso contengano colonne senza nome, vengono posizionati nel DataSet secondo il criterio "Column1", "Column2" e così via.If the incoming data contains unnamed columns, they are placed in the DataSet according to the pattern "Column1", "Column2", and so on.

Eseguire l'overload del Fill che accetta DataTable come un parametro ottiene solo il primo risultato.The overload of Fill that takes DataTable as a parameter only obtains the first result. Usare un overload del Fill che accetta DataSet come parametro per ottenere più risultati.Use an overload of Fill that takes DataSet as a parameter to obtain multiple results.

È possibile usare la Fill metodo più volte sullo stesso DataTable.You can use the Fill method multiple times on the same DataTable. Se esiste una chiave primaria, le righe in ingresso vengono unite con le righe corrispondenti che esistano già.If a primary key exists, incoming rows are merged with matching rows that already exist. Se non esiste alcuna chiave primaria, le righe in ingresso vengono accodate al DataTable.If no primary key exists, incoming rows are appended to the DataTable.

Se SelectCommand restituisce i risultati di un OUTER JOIN, mediante DataAdapter non viene impostato un valore di PrimaryKey per l'oggetto DataTablerisultante.If the SelectCommand returns the results of an OUTER JOIN, the DataAdapter does not set a PrimaryKey value for the resulting DataTable. È necessario definire in modo esplicito la chiave primaria per garantire che le righe duplicate vengano risolte correttamente.You must explicitly define the primary key to ensure that duplicate rows are resolved correctly. Per altre informazioni, vedere definizione di chiavi primarie.For more information, see Defining Primary Keys.

Nota

Durante la gestione di batch di istruzioni SQL che restituiscono più risultati, l'implementazione di FillSchema per il Provider di dati .NET Framework per OLE DB consente di recuperare informazioni sullo schema per solo il primo risultato.When handling batch SQL statements that return multiple results, the implementation of FillSchema for the .NET Framework Data Provider for OLE DB retrieves schema information for only the first result. Per recuperare informazioni sullo schema per più risultati, usare Fill con il MissingSchemaAction impostato su AddWithKey.To retrieve schema information for multiple results, use Fill with the MissingSchemaAction set to AddWithKey.

Note per gli eredi

Questo overload del metodo di Fill(DataSet) metodo è protetto e deve essere utilizzato da un provider di dati .NET Framework.This overload of the Fill(DataSet) method is protected and is designed for use by a .NET Framework data provider.

Vedi anche

Si applica a