Questo articolo è stato tradotto automaticamente. Per visualizzare l'articolo in inglese, selezionare la casella di controllo Inglese. È possibile anche visualizzare il testo inglese in una finestra popup posizionando il puntatore del mouse sopra il testo.
Traduzione
Inglese

Metodo DbDataAdapter.Fill (DataSet, Int32, Int32, String, IDbCommand, CommandBehavior)

 

Data di pubblicazione: ottobre 2016

Aggiunge o aggiorna righe in un intervallo specificato nel DataSet affinché corrispondano a quelle nell'origine dati mediante la DataSet e nomi di tabella, la stringa di comando e comportamento del comando di origine.

Spazio dei nomi:   System.Data.Common
Assembly:  System.Data (in System.Data.dll)

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

Parametri

dataSet
Type: System.Data.DataSet

Oggetto DataSet per inserire i record e, se necessario, dello schema.

startRecord
Type: System.Int32

Il numero di record in base zero per cominciare.

maxRecords
Type: System.Int32

Il numero massimo di record da recuperare.

srcTable
Type: System.String

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

command
Type: System.Data.IDbCommand

L'istruzione SQL SELECT utilizzata per recuperare righe dall'origine dati.

behavior
Type: System.Data.CommandBehavior

Uno dei valori di CommandBehavior.

Valore restituito

Type: System.Int32

Il numero di righe correttamente aggiunti o aggiornati nel DataSet. Non include righe interessate dalle istruzioni che non restituiscono righe.

Exception Condition
InvalidOperationException

La tabella di origine non è valida.

ArgumentException

Il startRecord parametro è minore di 0.

-oppure-

Il maxRecords parametro è minore di 0.

Il Fill metodo recupera righe dall'origine dati utilizzando l'istruzione SELECT specificata da un oggetto associato SelectCommand proprietà. L'oggetto connessione associato con l'istruzione SELECT deve essere valido, ma non devono essere aperte. Se la connessione viene chiusa prima Fill viene chiamato, verrà aperta per recuperare i dati, quindi chiusa. Se la connessione è aperta prima di Fill viene chiamato, rimane aperto.

Il Fill aggiunge quindi le righe di destinazione DataTable gli oggetti di DataSet, creando il DataTable oggetti se non già presenti. Quando si crea DataTable oggetti, il Fill operazione consente di creare solo i metadati dei nomi di colonna. Tuttavia, se il MissingSchemaAction è impostata su AddWithKey, chiavi primarie appropriate e i vincoli vengono creati.

Se il DbDataAdapter rileva colonne duplicate durante la compilazione di un DataTable, genera nomi per le colonne successive utilizzando il modello "columnname1", "columnname2","columnname3" e così via. Se i dati in arrivo contengono colonne senza nome, vengono inseriti nel DataSet secondo il criterio "Column1", "Column2" e così via. Quando vengono aggiunte più set di risultati per il DataSet ogni set di risultati viene inserito in una tabella separata. Set di risultati aggiuntivi sono denominati aggiungendo i valori integrali al nome della tabella specificato (ad esempio, "Table", "Table1", "Table2" e così via). Applicazioni che utilizzano nomi di colonna e tabella è necessario assicurarsi che non si verifichino conflitti con i criteri di denominazione.

Il Fill metodo supporta scenari in cui la DataSet contiene più DataTable oggetti i cui nomi differiscono solo per i casi. In tali situazioni, Fill esegue un confronto tra maiuscole e minuscole per trovare la tabella corrispondente e crea una nuova tabella se non esiste alcuna corrispondenza esatta. Il codice c# seguente viene illustrato 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 il DataSet contiene una sola DataTable il cui nome differisce solo per i casi che DataTable viene aggiornato. In questo scenario, il confronto viene fatta distinzione tra maiuscole e minuscole. Il codice c# seguente viene illustrato 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 utilizzare il Fill metodo più volte sullo stesso DataTable. Se esiste una chiave primaria, le righe in arrivo vengono unite con le righe corrispondenti già esistenti. Se non esiste alcuna chiave primaria, le righe in arrivo verranno aggiunte le DataTable.

Se SelectCommand restituisce i risultati di un OUTER JOIN, mediante DataAdapter non viene impostato un valore di PrimaryKey per l'oggetto DataTable risultante. È necessario definire in modo esplicito la chiave primaria per garantire che le righe duplicate vengano risolte correttamente. Per ulteriori informazioni, vedereDefinizione di chiavi primarie.

System_CAPS_noteNota

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

Note per gli implementatori:

Questo overload del metodo di Fill metodo è protetto e deve essere utilizzato da un provider di dati .NET Framework.

.NET Framework
Disponibile da 1.1
Torna all'inizio
Mostra: