DbDataAdapter.Fill Metodo

Definizione

Riempie un DataSet o un DataTable.

Overload

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.

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.

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

Aggiunge o aggiorna righe in un intervallo specificato nell'oggetto DataSet affinché corrispondano a quelle nell'origine dati usando i nomi DataSet, DataTable e IDataReader.

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.

Fill(Int32, Int32, DataTable[])

Aggiunge o aggiorna righe in uno o più DataTable oggetti per corrispondere a quelli nell'origine dati a partire dal record specificato e recuperando fino al numero massimo di record specificato.

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.

Fill(DataTable, IDataReader)

Aggiunge o aggiorna righe in un oggetto DataTable affinché corrispondano a quelle dell'origine dati, usando i nomi DataTable e IDataReader specificati.

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.

Fill(DataSet)

Aggiunge o aggiorna righe nell'oggetto DataSet.

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.

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

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

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.

protected virtual int Fill (System.Data.DataSet dataSet, int startRecord, int maxRecords, string srcTable, System.Data.IDbCommand command, System.Data.CommandBehavior behavior);

Parametri

dataSet
DataSet

Oggetto DataSet in cui inserire i record e, se necessario, lo schema.

startRecord
Int32

Numero di record in base zero con cui iniziare.

maxRecords
Int32

Numero massimo di record da recuperare. Specificare 0 per recuperare tutti i record dopo il record iniziale.

srcTable
String

Nome della tabella di origine da usare per il mapping di tabelle.

command
IDbCommand

Istruzione SQL SELECT utilizzata per recuperare righe dall'origine dati.

behavior
CommandBehavior

Uno dei valori di CommandBehavior.

Restituisce

Numero di righe aggiunte o aggiornate correttamente nell'oggetto DataSet. Non sono incluse righe modificate da istruzioni che non restituiscono righe.

Eccezioni

Tabella di origine non valida.

Il parametro startRecord è minore di 0.

-oppure-

Il parametro maxRecords è minore di 0.

Commenti

Un maxRecords valore pari a 0 ottiene tutti i record trovati dopo il record iniziale. Se maxRecords è maggiore del numero di righe rimanenti, vengono restituite solo le righe rimanenti e non viene generato alcun errore.

Il Fill metodo recupera righe dall'origine dati usando l'istruzione SELECT specificata da una proprietà associata SelectCommand . L'oggetto di connessione associato all'istruzione SELECT deve essere valido, ma non deve essere aperto. Se la connessione viene chiusa prima Fill della chiamata, viene aperta per recuperare i dati, quindi chiusa. Se la connessione è aperta prima Fill della chiamata, rimane aperta.

L'operazione Fill aggiunge quindi le righe agli oggetti di destinazione DataTable nell'oggetto DataSet, creando gli DataTable oggetti se non esistono già. Quando si creano oggetti, l'operazione Fill normalmente crea DataTable solo metadati dei nomi di colonna. Tuttavia, se la MissingSchemaAction proprietà è impostata su AddWithKey, vengono create anche chiavi e vincoli primari appropriati.

Se le colonne duplicate vengono visualizzate durante la DbDataAdapter popolamento di un DataTableoggetto , genera nomi per le colonne successive, usando il modello "columnname 1", "columnname2", "columnname3" e così via. Se i dati in ingresso contengono colonne senza nome, vengono posizionate in DataSet base al modello "Column1", "Column2" e così via. Quando vengono aggiunti più set di risultati a DataSet ogni set di risultati viene inserito in una tabella separata. I set di risultati aggiuntivi vengono denominati aggiungendo valori integrali al nome della tabella specificato, ad esempio "Table", "Table1", "Table2" e così via. Se l'app usa nomi di colonna e tabella, assicurarsi che non siano presenti conflitti con questi modelli di denominazione.

Il Fill metodo supporta scenari in cui l'oggetto DataSet contiene più DataTable oggetti i cui nomi differiscono solo in base al caso. In tali situazioni, Fill esegue un confronto con distinzione tra maiuscole e minuscole per trovare la tabella corrispondente e crea una nuova tabella se non esiste alcuna corrispondenza esatta. Il codice C# seguente illustra questo comportamento.

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 l'oggetto DataSet contiene solo uno DataTable il cui nome differisce solo in base al caso, che DataTable viene aggiornato. In questo scenario il confronto è senza distinzione tra maiuscole e minuscole. Il codice C# seguente illustra questo comportamento.

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 il Fill metodo più volte nello stesso DataTableoggetto . Se esiste una chiave primaria, le righe in ingresso vengono unite con righe corrispondenti già esistenti. Se non esiste alcuna chiave primaria, le righe in ingresso vengono accodate all'oggetto DataTable.

Se SelectCommand restituisce i risultati di un OUTER JOIN, mediante DataAdapter non viene impostato un valore di PrimaryKey per l'oggetto DataTablerisultante. È necessario definire in modo esplicito la chiave primaria per assicurarsi che le righe duplicate vengano risolte correttamente. Per altre informazioni, vedere Definizione delle chiavi primarie.

Nota

Quando si gestiscono istruzioni SQL batch che restituiscono più risultati, l'implementazione di Fill e FillSchema per un provider di dati .NET Framework recupera le informazioni sullo schema solo per il primo risultato.

Note per gli eredi

Questo overload del metodo è protetto ed è progettato per l'uso Fill(DataSet) da parte di un provider di dati .NET Framework.

Vedi anche

Si applica a

.NET 9 e altre versioni
Prodotto Versioni
.NET Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 1.1, 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 2.0, 2.1

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

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

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.

protected virtual int Fill (System.Data.DataTable[] dataTables, int startRecord, int maxRecords, System.Data.IDbCommand command, System.Data.CommandBehavior behavior);

Parametri

dataTables
DataTable[]

Oggetti DataTable da riempire dall'origine dati.

startRecord
Int32

Numero di record in base zero con cui iniziare.

maxRecords
Int32

Numero massimo di record da recuperare. Specificare 0 per recuperare tutti i record dopo il record iniziale.

command
IDbCommand

Enumerazione IDbCommand eseguita per riempire gli oggetti DataTable.

behavior
CommandBehavior

Uno dei valori di CommandBehavior.

Restituisce

Numero di righe aggiunte o aggiornate nelle tabelle di dati.

Eccezioni

DataSet non è valido.

Tabella di origine non valida.

-oppure-

Connessione non valida.

Impossibile trovare la connessione.

Il parametro startRecord è minore di 0.

-oppure-

Il parametro maxRecords è minore di 0.

Commenti

Un maxRecords valore pari a 0 ottiene tutti i record trovati dopo il record iniziale. Se maxRecords è maggiore del numero di righe rimanenti, vengono restituite solo le righe rimanenti e non viene generato alcun errore.

Il Fill metodo recupera i dati dall'origine dati usando un'istruzione SELECT. L'oggetto IDbConnection associato all'istruzione SELECT deve essere valido, ma non deve essere aperto. Se l'oggetto IDbConnection viene chiuso prima Fill di essere chiamato, viene aperto per recuperare i dati, quindi chiuso. Se la connessione è aperta prima Fill della chiamata, rimane aperta.

Se un comando non restituisce righe, nessuna tabella viene aggiunta a DataSet, ma non viene generata alcuna eccezione.

Se l'oggetto rileva colonne duplicate durante la compilazione di un DataTableoggetto , genererà nomi per le colonne successive, usando il DbDataAdapter modello "columnname 1", "columnname2", "columnname3" e così via. Se i dati in ingresso contengono colonne senza nome, vengono posizionate in DataSet base al modello "Column1", "Column2" e così via.

Quando la query specificata restituisce più risultati, ogni set di risultati viene inserito in una tabella separata. I set di risultati aggiuntivi vengono denominati aggiungendo valori integrali al nome della tabella specificato, ad esempio "Table", "Table1", "Table2" e così via. Poiché non viene creata alcuna tabella per una query che non restituisce righe, se si elabora una query di inserimento seguita da una query selezionata, la tabella creata per la query di selezione sarà denominata "Tabella", perché è la prima tabella creata. Se l'app usa nomi di colonna e tabella, assicurarsi che non siano presenti conflitti con questi modelli di denominazione.

Il Fill metodo supporta scenari in cui l'oggetto DataSet contiene più DataTable oggetti i cui nomi differiscono solo in base al caso. In tali situazioni, Fill esegue un confronto con distinzione tra maiuscole e minuscole per trovare la tabella corrispondente e crea una nuova tabella se non esiste alcuna corrispondenza esatta. Il codice C# seguente illustra questo comportamento.

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 l'oggetto DataSet contiene solo uno DataTable il cui nome differisce solo in base al caso, che DataTable viene aggiornato. In questo scenario, il confronto non fa distinzione tra maiuscole e minuscole. Il codice C# seguente illustra questo comportamento.

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 si verifica un errore o un'eccezione durante il popolamento delle tabelle dati, le righe aggiunte prima dell'occorrenza dell'errore rimangono nelle tabelle dati. Il resto dell'operazione viene interrotto.

Quando l'istruzione SELECT usata per popolare gli DataTable oggetti restituisce più risultati, ad esempio un'istruzione SQL batch, tenere presente quanto segue:

  • Quando si elaborano più risultati da un'istruzione SQL batch, maxRecords si applica solo al primo risultato. Lo stesso vale per le righe contenenti risultati con capitoli (solo provider di dati .NET Framework per OLE DB). Il risultato di primo livello è limitato da maxRecords, ma vengono aggiunte tutte le righe figlio.

  • Se uno dei risultati contiene un errore, tutti i risultati successivi vengono ignorati.

Nota

L'oggetto DataSet non conterrà più del numero di record indicati da maxRecords. Tuttavia, l'intero set di risultati generato dalla query viene comunque restituito dal server.

Note per gli eredi

Quando si esegue l'override Fill(DataSet) in una classe derivata, assicurarsi di chiamare il metodo della Fill(DataSet) classe base.

Vedi anche

Si applica a

.NET 9 e altre versioni
Prodotto Versioni
.NET Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 2.0, 2.1

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

Aggiunge o aggiorna righe in un intervallo specificato nell'oggetto DataSet affinché corrispondano a quelle nell'origine dati usando i nomi DataSet, DataTable e IDataReader.

protected virtual int Fill (System.Data.DataSet dataSet, string srcTable, System.Data.IDataReader dataReader, int startRecord, int maxRecords);

Parametri

dataSet
DataSet

Oggetto DataSet in cui inserire i record e, se necessario, lo schema.

srcTable
String

Nome di DataTable da utilizzare per il mapping di tabella.

dataReader
IDataReader

Nome di IDataReader.

startRecord
Int32

Numero di record in base zero con cui iniziare.

maxRecords
Int32

Numero massimo di record da recuperare. Specificare 0 per recuperare tutti i record dopo il record iniziale.

Restituisce

Numero di righe aggiunte o aggiornate correttamente nell'oggetto DataSet. Non sono incluse righe modificate da istruzioni che non restituiscono righe.

Eccezioni

startRecord è minore di 0.

-oppure-

maxRecords è minore di 0.

Commenti

Il maxRecords valore 0 ottiene tutti i record trovati dopo il record iniziale. Se maxRecords è maggiore del numero di righe rimanenti, vengono restituite solo le righe rimanenti e non viene generato alcun errore.

Si applica a

.NET Framework 1.1
Prodotto Versioni
.NET Framework 1.1

Fill(DataSet, Int32, Int32, String)

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

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.

public int Fill (System.Data.DataSet dataSet, int startRecord, int maxRecords, string srcTable);

Parametri

dataSet
DataSet

Oggetto DataSet in cui inserire i record e, se necessario, lo schema.

startRecord
Int32

Numero di record in base zero con cui iniziare.

maxRecords
Int32

Numero massimo di record da recuperare. Specificare 0 per recuperare tutti i record dopo il record iniziale.

srcTable
String

Nome della tabella di origine da usare per il mapping di tabelle.

Restituisce

Numero di righe aggiunte o aggiornate correttamente nell'oggetto DataSet. Non sono incluse righe modificate da istruzioni che non restituiscono righe.

Eccezioni

DataSet non è valido.

Tabella di origine non valida.

-oppure-

Connessione non valida.

Impossibile trovare la connessione.

Il parametro startRecord è minore di 0.

-oppure-

Il parametro maxRecords è minore di 0.

Esempio

Nell'esempio seguente viene utilizzata la classe derivata , OleDbDataAdapter, per riempire un DataSet oggetto con 15 righe, a partire dalla riga 10, dalla tabella Categories . In questo esempio si presuppone che sia stato creato un OleDbDataAdapter oggetto e un oggetto DataSet.

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

Commenti

Il maxRecords valore 0 ottiene tutti i record trovati dopo il record iniziale. Se maxRecords è maggiore del numero di righe rimanenti, vengono restituite solo le righe rimanenti e non viene generato alcun errore.

Se il comando select corrispondente è un'istruzione che restituisce più risultati, Fill si applica maxRecords solo al primo risultato.

Il Fill metodo recupera i dati dall'origine dati usando un'istruzione SELECT. L'oggetto IDbConnection associato all'istruzione SELECT deve essere valido, ma non deve essere aperto. Se l'oggetto IDbConnection viene chiuso prima Fill della chiamata, viene aperto per recuperare i dati e quindi chiuso. Se la connessione è aperta prima Fill della chiamata, rimane aperta.

Se un comando non restituisce righe, nessuna tabella viene aggiunta a DataSet, ma non viene generata alcuna eccezione.

Se l'oggetto rileva colonne duplicate durante il DbDataAdapter popolamento di , DataTablegenererà nomi per le colonne successive, usando il modello "columnname1", "columnname2", "columnname3" e così via. Se i dati in ingresso contengono colonne senza nome, vengono posizionate in DataSet base al modello "Column1", "Column2" e così via.

Quando la query specificata restituisce più risultati, ogni set di risultati viene inserito in una tabella separata. I set di risultati aggiuntivi vengono denominati aggiungendo valori integrali al nome della tabella specificato, ad esempio "Table", "Table1", "Table2" e così via. Poiché non viene creata alcuna tabella per una query che non restituisce righe, se si elabora una query di inserimento seguita da una query di selezione, la tabella creata per la query di selezione è denominata "Table", perché è la prima tabella creata. Se l'app usa nomi di colonna e tabella, assicurarsi che non vi siano conflitti con questi modelli di denominazione.

Il Fill metodo supporta scenari in cui contiene DataSet più DataTable oggetti i cui nomi differiscono solo per maiuscole e minuscole. In tali situazioni, Fill esegue un confronto con distinzione tra maiuscole e minuscole per trovare la tabella corrispondente e crea una nuova tabella se non esiste alcuna corrispondenza esatta. Il codice C# seguente illustra questo comportamento.

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 l'oggetto DataSet contiene un solo DataTable nome il cui nome è diverso solo per caso, viene DataTable aggiornato. In questo scenario, il confronto non fa distinzione tra maiuscole e minuscole. Il codice C# seguente illustra questo comportamento.

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 si verifica un errore o un'eccezione durante il popolamento delle tabelle dati, le righe aggiunte prima dell'occorrenza dell'errore rimangono nelle tabelle dati. Il resto dell'operazione viene interrotto.

Quando l'istruzione SELECT usata per popolare restituisce DataSet più risultati, ad esempio istruzioni SQL batch, tenere presente quanto segue:

  • Quando si elaborano più risultati da un'istruzione SQL batch, maxRecords si applica solo al primo risultato. Lo stesso vale per le righe contenenti risultati con capitoli (solo provider di dati .NET Framework per OLE DB). Il risultato di primo livello è limitato da maxRecords, ma vengono aggiunte tutte le righe figlio.

  • Se uno dei risultati contiene un errore, tutti i risultati successivi vengono ignorati e non aggiunti a DataSet.

Quando si usano chiamate successive Fill per aggiornare il contenuto di DataSet, è necessario soddisfare due condizioni:

  1. L'istruzione SQL deve corrispondere a quella usata inizialmente per popolare .DataSet

  2. Le informazioni sulla colonna Chiave devono essere presenti.

Se sono presenti informazioni sulla chiave primaria, tutte le righe duplicate verranno riconciliate e verranno visualizzate una sola volta in DataTable che corrisponde a DataSet. Le informazioni sulla chiave primaria possono essere impostate tramite FillSchema, specificando la PrimaryKey proprietà di DataTableoppure impostando la MissingSchemaAction proprietà su AddWithKey.

Se SelectCommand restituisce i risultati di un OUTER JOIN, mediante DataAdapter non viene impostato un valore di PrimaryKey per l'oggetto DataTablerisultante. È necessario definire in modo esplicito la chiave primaria per assicurarsi che le righe duplicate vengano risolte correttamente. Per altre informazioni, vedere Definizione delle chiavi primarie.

Nota

Quando si gestiscono istruzioni SQL batch che restituiscono più risultati, l'implementazione di FillSchema per il provider di dati .NET Framework per OLE DB recupera le informazioni sullo schema solo per il primo risultato. Per recuperare le informazioni sullo schema per più risultati, usare Fill con l'oggetto MissingSchemaAction impostato su AddWithKey.

Nota

L'oggetto DataSet non conterrà più del numero di record indicati da maxRecords. Tuttavia, l'intero set di risultati generato dalla query viene comunque restituito dal server.

Note per gli eredi

Quando si esegue l'override Fill(DataSet) in una classe derivata, assicurarsi di chiamare il metodo della classe di Fill(DataSet) base.

Vedi anche

Si applica a

.NET 9 e altre versioni
Prodotto Versioni
.NET Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 1.1, 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 2.0, 2.1

Fill(Int32, Int32, DataTable[])

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

Aggiunge o aggiorna righe in uno o più DataTable oggetti in modo che corrispondano a quelli nell'origine dati a partire dal record specificato e recuperando fino al numero massimo di record specificato.

public int Fill (int startRecord, int maxRecords, params System.Data.DataTable[] dataTables);

Parametri

startRecord
Int32

Numero di record in base zero con cui iniziare.

maxRecords
Int32

Numero massimo di record da recuperare. Specificare 0 per recuperare tutti i record dopo il record iniziale.

dataTables
DataTable[]

Oggetti DataTable da riempire dall'origine dati.

Restituisce

Numero di righe aggiunte o aggiornate correttamente negli DataTable oggetti . Questo valore non include le righe modificate da istruzioni che non restituiscono righe.

Eccezioni

dataTables è null o è una matrice vuota.

startRecord è minore di 0.

-oppure-

maxRecords è minore di 0.

Commenti

Il maxRecords valore 0 ottiene tutti i record trovati dopo il record iniziale. Se maxRecords è maggiore del numero di righe rimanenti, vengono restituite solo le righe rimanenti e non viene generato alcun errore.

Il Fill metodo recupera le righe dall'origine dati utilizzando l'istruzione SELECT specificata da una proprietà associata SelectCommand . L'oggetto connessione associato all'istruzione SELECT deve essere valido, ma non deve essere aperto. Se la connessione viene chiusa prima Fill della chiamata, viene aperta per recuperare i dati e quindi viene chiusa. Se la connessione è aperta prima Fill della chiamata, rimane aperta.

L'operazione Fill aggiunge quindi le righe agli oggetti di destinazione DataTable in DataSet, creando gli DataTable oggetti se non esistono già. Quando si creano DataTable oggetti, l'operazione Fill in genere crea solo i metadati del nome di colonna. Tuttavia, se la MissingSchemaAction proprietà è impostata su AddWithKey, vengono create anche chiavi primarie e vincoli appropriati.

Se SelectCommand restituisce i risultati di un OUTER JOIN, mediante DataAdapter non viene impostato un valore di PrimaryKey per l'oggetto DataTablerisultante. È necessario definire in modo esplicito la chiave primaria per assicurarsi che le righe duplicate vengano risolte correttamente. Per altre informazioni, vedere Definizione delle chiavi primarie.

Se l'adattatore dati rileva colonne duplicate durante il popolamento di , DataTablegenera nomi per le colonne successive, usando il modello "columnname1", "columnname2", "columnname3" e così via. Se i dati in ingresso contengono colonne senza nome, vengono posizionate in DataSet base al modello "Column1", "Column2" e così via. Quando vengono aggiunti più set di risultati a DataSet, ogni set di risultati viene inserito in una tabella separata. I set di risultati aggiuntivi vengono denominati aggiungendo valori integrali al nome della tabella specificato, ad esempio "Table", "Table1", "Table2" e così via. Se l'app usa nomi di colonna e tabella, assicurarsi che non vi siano conflitti con questi modelli di denominazione.

Quando l'istruzione SELECT utilizzata per popolare restituisce DataSet più risultati, ad esempio istruzioni SQL batch, se uno dei risultati contiene un errore, tutti i risultati successivi vengono ignorati e non aggiunti a DataSet.

È possibile usare il Fill metodo più volte nello stesso DataTableoggetto . Se esiste una chiave primaria, le righe in ingresso vengono unite alle righe corrispondenti già esistenti. Se non esiste alcuna chiave primaria, le righe in ingresso vengono aggiunte a DataTable.

Nota

Quando si gestiscono istruzioni SQL batch che restituiscono più risultati, l'implementazione di FillSchema per il provider di dati .NET Framework per OLE DB recupera le informazioni sullo schema solo per il primo risultato. Per recuperare le informazioni sullo schema per più risultati, usare Fill con l'oggetto MissingSchemaAction impostato su AddWithKey.

Vedi anche

Si applica a

.NET 9 e altre versioni
Prodotto Versioni
.NET Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 2.0, 2.1

Fill(DataTable)

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

Aggiunge o aggiorna righe in un intervallo specificato nell'oggetto DataSet affinché corrispondano a quelle nell'origine dati mediante il nome di DataTable.

public int Fill (System.Data.DataTable dataTable);

Parametri

dataTable
DataTable

Nome di DataTable da utilizzare per il mapping di tabella.

Restituisce

Numero di righe aggiunte o aggiornate correttamente nell'oggetto DataSet. Non sono incluse righe modificate da istruzioni che non restituiscono righe.

Eccezioni

Tabella di origine non valida.

Commenti

Il Fill metodo recupera le righe dall'origine dati utilizzando l'istruzione SELECT specificata da una proprietà associata SelectCommand . L'oggetto connessione associato all'istruzione SELECT deve essere valido, ma non deve essere aperto. Se la connessione viene chiusa prima Fill della chiamata, viene aperta per recuperare i dati, quindi chiusa. Se la connessione è aperta prima Fill della chiamata, rimane aperta.

L'operazione Fill aggiunge quindi le righe agli oggetti di destinazione DataTable in DataSet, creando gli DataTable oggetti se non esistono già. Quando si creano DataTable oggetti, l'operazione Fill in genere crea solo i metadati del nome di colonna. Tuttavia, se la MissingSchemaAction proprietà è impostata su AddWithKey, vengono create anche chiavi primarie e vincoli appropriati.

Se rileva colonne duplicate durante il DbDataAdapter popolamento di , DataTablegenera nomi per le colonne successive, usando il modello "columnname1", "columnname2", "columnname3" e così via. Se i dati in ingresso contengono colonne senza nome, vengono posizionate in DataSet base al modello "Column1", "Column2" e così via. Quando vengono aggiunti più set di risultati a DataSet ogni set di risultati viene inserito in una tabella separata.

L'overload di Fill che accetta DataTable come parametro ottiene solo il primo risultato. Usare un overload di Fill che accetta DataSet come parametro per ottenere più risultati.

Il Fill metodo supporta scenari in cui contiene DataSet più DataTable oggetti i cui nomi differiscono solo per maiuscole e minuscole. In tali situazioni, Fill esegue un confronto con distinzione tra maiuscole e minuscole per trovare la tabella corrispondente e crea una nuova tabella se non esiste alcuna corrispondenza esatta. Il codice C# seguente illustra questo comportamento.

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 l'oggetto DataSet contiene un solo DataTable nome il cui nome è diverso solo per caso, viene DataTable aggiornato. In questo scenario, il confronto non fa distinzione tra maiuscole e minuscole. Il codice C# seguente illustra questo comportamento.

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 il Fill metodo più volte nello stesso DataTableoggetto . Se esiste una chiave primaria, le righe in ingresso vengono unite alle righe corrispondenti già esistenti. Se non esiste alcuna chiave primaria, le righe in ingresso vengono aggiunte a DataTable.

Se SelectCommand restituisce i risultati di un OUTER JOIN, mediante DataAdapter non viene impostato un valore di PrimaryKey per l'oggetto DataTablerisultante. È necessario definire in modo esplicito la chiave primaria per assicurarsi che le righe duplicate vengano risolte correttamente. Per altre informazioni, vedere Definizione delle chiavi primarie.

Nota

Quando si gestiscono istruzioni SQL batch che restituiscono più risultati, l'implementazione di Fill e FillSchema per un provider di dati .NET Framework recupera le informazioni sullo schema solo per il primo risultato.

Note per gli eredi

Questo overload del Fill(DataSet) metodo è protetto ed è progettato per l'uso da parte di un provider di dati .NET Framework.

Vedi anche

Si applica a

.NET 9 e altre versioni
Prodotto Versioni
.NET Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 1.1, 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 2.0, 2.1

Fill(DataTable, IDataReader)

Aggiunge o aggiorna righe in un oggetto DataTable affinché corrispondano a quelle dell'origine dati, usando i nomi DataTable e IDataReader specificati.

protected virtual int Fill (System.Data.DataTable dataTable, System.Data.IDataReader dataReader);

Parametri

dataTable
DataTable

Oggetto DataTable in cui inserire i record e, se necessario, lo schema.

dataReader
IDataReader

Nome di IDataReader.

Restituisce

Numero di righe aggiunte o aggiornate correttamente nell'oggetto DataTable. Non sono incluse righe modificate da istruzioni che non restituiscono righe.

Si applica a

.NET Framework 1.1
Prodotto Versioni
.NET Framework 1.1

Fill(DataSet, String)

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

Aggiunge o aggiorna righe in un oggetto DataSet affinché corrispondano a quelle nell'origine dati mediante l'oggetto DataSet e i relativi nomi DataTable.

public int Fill (System.Data.DataSet dataSet, string srcTable);

Parametri

dataSet
DataSet

Oggetto DataSet in cui inserire i record e, se necessario, lo schema.

srcTable
String

Nome della tabella di origine da usare per il mapping di tabelle.

Restituisce

Numero di righe aggiunte o aggiornate correttamente nell'oggetto DataSet. Non sono incluse righe modificate da istruzioni che non restituiscono righe.

Eccezioni

Tabella di origine non valida.

Esempio

Nell'esempio seguente viene utilizzata la classe derivata , OleDbDataAdapter, per riempire un DataSet oggetto con righe della tabella categories. In questo esempio si presuppone che sia stato creato un OleDbDataAdapter oggetto e un oggetto DataSet.

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

Commenti

Il Fill metodo recupera i dati dall'origine dati usando un'istruzione SELECT. L'oggetto IDbConnection associato al comando select deve essere valido, ma non deve essere aperto. Se l'oggetto IDbConnection viene chiuso prima Fill della chiamata, viene aperto per recuperare i dati, quindi chiuso. Se la connessione è aperta prima Fill della chiamata, rimane aperta.

Se un comando non restituisce righe, non vengono aggiunte tabelle a DataSete non viene generata alcuna eccezione.

Se l'oggetto rileva colonne duplicate durante il DbDataAdapter popolamento di , DataTablegenererà nomi per le colonne successive, usando il criterio "columnname1", "columnname2", "columnname3" e così via. Se i dati in ingresso contengono colonne senza nome, vengono posizionate in DataSet base al modello "Column1", "Column2" e così via.

Quando la query specificata restituisce più risultati, ogni set di risultati viene inserito in una tabella separata. I set di risultati aggiuntivi vengono denominati aggiungendo valori integrali al nome della tabella specificato, ad esempio "Table", "Table1", "Table2" e così via. Poiché non viene creata alcuna tabella per una query che non restituisce righe, se si desidera elaborare una query di inserimento seguita da una query di selezione, la tabella creata per la query di selezione sarà denominata "Table", perché è la prima tabella creata. Se l'app usa nomi di colonna e tabella, assicurarsi che non vi siano conflitti con questi modelli di denominazione.

Il Fill metodo supporta scenari in cui contiene DataSet più DataTable oggetti i cui nomi differiscono solo per maiuscole e minuscole. In tali situazioni, Fill esegue un confronto con distinzione tra maiuscole e minuscole per trovare la tabella corrispondente e crea una nuova tabella se non esiste alcuna corrispondenza esatta. Il codice C# seguente illustra questo comportamento.

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 l'oggetto DataSet contiene un solo DataTable nome il cui nome è diverso solo per caso, viene DataTable aggiornato. In questo scenario, il confronto non fa distinzione tra maiuscole e minuscole. Il codice C# seguente illustra questo comportamento.

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 si verifica un errore o un'eccezione durante il popolamento delle tabelle dati, le righe aggiunte prima dell'occorrenza dell'errore rimangono nelle tabelle dati. Il resto dell'operazione viene interrotto.

Quando l'istruzione SELECT usata per popolare restituisce DataSet più risultati, ad esempio un'istruzione SQL batch, tenere presente quanto segue:

  • Se uno dei risultati contiene un errore, tutti i risultati successivi vengono ignorati e non aggiunti a DataSet.

Quando si usano chiamate successive Fill per aggiornare il contenuto di DataSet, è necessario soddisfare due condizioni:

  1. L'istruzione SQL deve corrispondere a quella usata inizialmente per popolare .DataSet

  2. Le informazioni sulla colonna Chiave devono essere presenti. Se sono presenti informazioni sulla chiave primaria, tutte le righe duplicate vengono riconciliate e vengono visualizzate una sola volta in DataTable che corrisponde a DataSet. Le informazioni sulla chiave primaria possono essere impostate tramite FillSchema, specificando la PrimaryKey proprietà di DataTableoppure impostando la MissingSchemaAction proprietà su AddWithKey.

Se SelectCommand restituisce i risultati di un OUTER JOIN, mediante DataAdapter non viene impostato un valore di PrimaryKey per l'oggetto DataTablerisultante. È necessario definire in modo esplicito la chiave primaria per assicurarsi che le righe duplicate vengano risolte correttamente. Per altre informazioni, vedere Definizione delle chiavi primarie.

Nota

Quando si gestiscono istruzioni SQL batch che restituiscono più risultati, l'implementazione di per il provider di FillSchema dati .NET Framework per OLE DB recupera le informazioni sullo schema solo per il primo risultato. Per recuperare le informazioni sullo schema per più risultati, usare Fill con il MissingSchemaAction set su AddWithKey.

Note per gli eredi

Quando si esegue l'override Fill(DataSet) in una classe derivata, assicurarsi di chiamare il metodo della classe di Fill(DataSet) base.

Vedi anche

Si applica a

.NET 9 e altre versioni
Prodotto Versioni
.NET Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 1.1, 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 2.0, 2.1

Fill(DataSet)

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

Aggiunge o aggiorna righe nell'oggetto DataSet.

public override int Fill (System.Data.DataSet dataSet);

Parametri

dataSet
DataSet

Oggetto DataSet in cui inserire i record e, se necessario, lo schema.

Restituisce

Numero di righe aggiunte o aggiornate correttamente nell'oggetto DataSet. Non sono incluse righe modificate da istruzioni che non restituiscono righe.

Implementazioni

Commenti

Il Fill metodo recupera i dati dall'origine dati usando un'istruzione SELECT. L'oggetto IDbConnection associato al comando select deve essere valido, ma non deve essere aperto. Se l'oggetto IDbConnection viene chiuso prima Fill viene chiamato, viene aperto per recuperare i dati e quindi chiuso. Se la connessione è aperta prima Fill della chiamata, rimane aperta.

Se si verifica un errore o un'eccezione durante la popolamento delle tabelle dati, le righe aggiunte prima dell'occorrenza dell'errore rimangono nelle tabelle dati. Il resto dell'operazione viene interrotto.

Se un comando non restituisce righe, nessuna tabella viene aggiunta all'oggetto DataSete non viene generata alcuna eccezione.

Se l'oggetto rileva colonne duplicate durante la DbDataAdapter compilazione di un DataTableoggetto , genera nomi per le colonne successive usando il modello "columnname 1", "columnname2", "columnname3" e così via. Se i dati in ingresso contengono colonne senza nome, vengono posizionate in DataSet base al modello "Column1", "Column2" e così via.

Quando la query specificata restituisce più risultati, il set di risultati per ogni query di restituzione di righe viene inserito in una tabella separata. I set di risultati aggiuntivi vengono denominati aggiungendo valori integrali al nome della tabella specificato, ad esempio "Table", "Table1", "Table2" e così via. Poiché non viene creata alcuna tabella per una query che non restituisce righe, se si elabora una query di inserimento seguita da una query selezionata, la tabella creata per la query di selezione è denominata "Table" perché è la prima tabella creata. Se l'app usa nomi di colonna e tabella, assicurarsi che non siano presenti conflitti con questi modelli di denominazione.

Quando l'istruzione SELECT usata per popolare i DataSet risultati restituisce più risultati, ad esempio istruzioni SQL batch, se uno dei risultati contiene un errore, tutti i risultati successivi vengono ignorati e non vengono aggiunti all'oggetto DataSet.

Quando si usano chiamate successive Fill per aggiornare il contenuto di DataSet, devono essere soddisfatte due condizioni:

  1. L'istruzione SQL deve corrispondere a quella usata inizialmente per popolare l'oggetto DataSet.

  2. Le informazioni sulla colonna Chiave devono essere presenti.

Se sono presenti informazioni sulla chiave primaria, le righe duplicate vengono riconciliate e vengono visualizzate una sola volta nell'oggetto corrispondente all'oggetto DataTableDataSet. Le informazioni sulla chiave primaria possono essere impostate tramite FillSchema, specificando la PrimaryKey proprietà dell'oggetto DataTableoppure impostando la MissingSchemaAction proprietà su AddWithKey.

Se SelectCommand restituisce i risultati di un OUTER JOIN, mediante DataAdapter non viene impostato un valore di PrimaryKey per l'oggetto DataTablerisultante. È necessario definire in modo esplicito la chiave primaria per assicurarsi che le righe duplicate vengano risolte correttamente. Per altre informazioni, vedere Definizione delle chiavi primarie.

Nota

Quando si gestiscono istruzioni SQL batch che restituiscono più risultati, l'implementazione di per il provider di FillSchema dati .NET Framework per OLE DB recupera le informazioni sullo schema solo per il primo risultato. Per recuperare le informazioni sullo schema per più risultati, usare Fill con il MissingSchemaAction set su AddWithKey.

Vedi anche

Si applica a

.NET 9 e altre versioni
Prodotto Versioni
.NET Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 1.1, 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 2.0, 2.1

Fill(DataTable, IDbCommand, CommandBehavior)

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

Aggiunge o aggiorna righe in un oggetto DataTable affinché corrispondano a quelle dell'origine dati, utilizzando gli oggetti DataTable, IDbCommand e CommandBehavior specificati.

protected virtual int Fill (System.Data.DataTable dataTable, System.Data.IDbCommand command, System.Data.CommandBehavior behavior);

Parametri

dataTable
DataTable

Oggetto DataTable in cui inserire i record e, se necessario, lo schema.

command
IDbCommand

Istruzione SQL SELECT utilizzata per recuperare righe dall'origine dati.

behavior
CommandBehavior

Uno dei valori di CommandBehavior.

Restituisce

Numero di righe aggiunte o aggiornate correttamente nell'oggetto DataTable. Non sono incluse righe modificate da istruzioni che non restituiscono righe.

Commenti

Il Fill metodo recupera righe dall'origine dati usando l'istruzione SELECT specificata da una proprietà associata SelectCommand . L'oggetto di connessione associato all'istruzione SELECT deve essere valido, ma non deve essere aperto. Se la connessione viene chiusa prima Fill della chiamata, viene aperta per recuperare i dati e quindi chiusa. Se la connessione è aperta prima Fill della chiamata, rimane aperta.

L'operazione Fill aggiunge quindi le righe all'oggetto di destinazione DataTable specificato nell'oggetto DataSet, creando l'oggetto DataTable se non esiste già. Quando si crea un DataTable oggetto, l'operazione Fill crea normalmente solo metadati dei nomi di colonna. Tuttavia, se la MissingSchemaAction proprietà è impostata su AddWithKey, vengono create anche chiavi e vincoli primari appropriati.

Se l'oggetto rileva colonne duplicate durante la compilazione di un DataTableoggetto , genererà nomi per le colonne successive, usando il DbDataAdapter modello "columnname 1", "columnname2", "columnname3" e così via. Se i dati in ingresso contengono colonne senza nome, vengono posizionate in DataSet base al modello "Column1", "Column2" e così via.

L'overload di Fill che accetta DataTable come parametro ottiene solo il primo risultato. Usare un overload di Fill che accetta DataSet come parametro per ottenere più risultati.

È possibile usare il Fill metodo più volte nello stesso DataTableoggetto . Se esiste una chiave primaria, le righe in ingresso vengono unite con righe corrispondenti già esistenti. Se non esiste alcuna chiave primaria, le righe in ingresso vengono accodate all'oggetto DataTable.

Se SelectCommand restituisce i risultati di un OUTER JOIN, mediante DataAdapter non viene impostato un valore di PrimaryKey per l'oggetto DataTablerisultante. È necessario definire in modo esplicito la chiave primaria per assicurarsi che le righe duplicate vengano risolte correttamente. Per altre informazioni, vedere Definizione delle chiavi primarie.

Nota

Quando si gestiscono istruzioni SQL batch che restituiscono più risultati, l'implementazione di per il provider di FillSchema dati .NET Framework per OLE DB recupera le informazioni sullo schema solo per il primo risultato. Per recuperare le informazioni sullo schema per più risultati, usare Fill con il MissingSchemaAction set su AddWithKey.

Note per gli eredi

Questo overload del metodo è protetto ed è progettato per l'uso Fill(DataSet) da parte di un provider di dati .NET Framework.

Vedi anche

Si applica a

.NET 9 e altre versioni
Prodotto Versioni
.NET Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 1.1, 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 2.0, 2.1