Convalida dei dati nei dataset
La convalida dei dati è il processo mediante il quale si conferma che i valori immessi negli oggetti dati sono conformi ai vincoli specificati all'interno di uno schema del dataset, nonché alle regole stabilite per l'applicazione. La convalida dei dati che precede l'invio degli aggiornamenti al database sottostante è un'operazione consigliata in quanto consente di ridurre gli errori nonché il numero potenziale di round trip tra un'applicazione e il database. È possibile confermare la validità dei dati scritti in un dataset compilando controlli di convalida nel dataset stesso. Per il dataset è possibile controllare i dati indipendentemente dal modo in cui viene svolto l'aggiornamento: direttamente dai controlli di un form, all'interno di un componente o in un altro modo. Poiché il dataset fa parte dell'applicazione, è il posto più adatto per compilare una convalida specifica dell'applicazione, anziché compilare gli stessi controlli all'interno del database back-end.
La posizione suggerita per l'aggiunta della convalida nell'applicazione è il file di classe parziale del dataset. In Visual Basic o Visual C# aprire Progettazione DataSet e fare doppio clic sulla colonna o sulla tabella per la quale si desidera creare una convalida. Questa azione comporta la creazione automatica di un gestore eventi ColumnChanging o RowChanging. Per ulteriori informazioni, vedere Procedura: convalidare i dati durante la modifica delle colonne o Procedura: convalidare i dati durante la modifica delle righe. Per un esempio completo, vedere Procedura dettagliata: aggiunta di convalida a un dataset.
Convalida dei dati
La convalida all'interno di un dataset può essere svolta nei seguenti modi:
Mediante la creazione di una convalida specifica dell'applicazione in grado di verificare i dati durante la modifica dei valori di una singola colonna dati. Per ulteriori informazioni, vedere Procedura: convalidare i dati durante la modifica delle colonne.
Mediante la creazione di una convalida specifica dell'applicazione in grado di verificare i dati durante la modifica dei valori, mentre è in corso la modifica di un'intera riga di dati. Per ulteriori informazioni, vedere Procedura: convalidare i dati durante la modifica delle righe.
Creare chiavi, vincoli UNIQUE e così via, come parte dell'effettiva definizione di schema del dataset. Per ulteriori informazioni su come incorporare la convalida nella definizione dello schema, vedere Constraining a DataColumn to Contain Unique Values.
Mediante l'impostazione delle proprietà dell'oggetto DataColumn, quali MaxLength, AllowDBNull e Unique.
Quando viene apportata una modifica a un record, l'oggetto DataTable può generare diversi eventi:
Gli eventi ColumnChanging e ColumnChanged vengono generati durante e dopo ogni modifica apportata a una singola colonna. L'evento ColumnChanging è utile quando si desidera convalidare le modifiche in determinate colonne. Le informazioni relative alla modifica proposta vengono passate come argomento con l'evento. Per ulteriori informazioni, vedere Procedura: convalidare i dati durante la modifica delle colonne.
Gli eventi RowChanging e RowChanged vengono generati durante e dopo qualsiasi modifica apportata a una riga. L'evento RowChanging è più generale, in quanto indica semplicemente che si sta effettuando una modifica nella riga, ma non si conosce la colonna in cui avviene tale modifica. Per ulteriori informazioni, vedere Procedura: convalidare i dati durante la modifica delle righe.
Per impostazione predefinita, ogni modifica apportata a una colonna genera pertanto quattro eventi: in primo luogo gli eventi ColumnChanging e ColumnChanged per la specifica colonna modificata, quindi gli eventi RowChanging e RowChanged. Se vengono apportate più modifiche alla riga, per ciascuna modifica verranno generati degli eventi.
Nota
Il metodo BeginEdit della riga di dati disattiva gli eventi RowChanging e RowChanged in seguito a ogni singola modifica di colonna.In tale caso, l'evento non viene generato finché non viene chiamato il metodo EndEdit, quando gli eventi RowChanging e RowChanged vengono generati una sola volta.Per ulteriori informazioni, vedere Procedura: disattivare i vincoli durante il riempimento di un dataset.
L'evento scelto dipende dal livello di dettaglio che si desidera conferire alla convalida. Se è importante intercettare un errore immediatamente dopo la modifica di una colonna, compilare la convalida utilizzando l'evento ColumnChanging. In caso contrario, utilizzare l'evento RowChanging, che potrebbe determinare l'intercettazione di diversi errori contemporaneamente. Inoltre, se i dati sono strutturati in modo che il valore di una colonna viene convalidato in base al contenuto di un'altra, sarà necessario effettuare la convalida durante l'evento RowChanging.
Quando i record vengono aggiornati, l'oggetto DataTable genera gli eventi ai quali è possibile rispondere durante e dopo l'inserimento di modifiche.
Se nell'applicazione è in uso un dataset tipizzato, sarà possibile creare gestori eventi fortemente tipizzati. Ciò comporta l'aggiunta di altri quattro eventi tipizzati per i quali è possibile creare gestori, ovvero dataTableNameRowChanging, dataTableNameRowChanged, dataTableNameRowDeleting e dataTableNameRowDeleted. Questi gestori eventi tipizzati passano un argomento nel quale sono compresi i nomi delle colonne della tabella che facilitano la lettura e la scrittura del codice.
Eventi di aggiornamento dei dati
Evento |
Descrizione |
---|---|
È in corso la modifica del valore di una colonna. L'evento passa la riga e la colonna insieme al nuovo valore proposto. |
|
Il valore di una colonna è stato modificato. L'evento passa la riga e la colonna insieme al valore proposto. |
|
Sta per essere eseguito il commit nel dataset delle modifiche apportate a un oggetto DataRow. Se il metodo BeginEdit non è stato chiamato, viene generato l'evento RowChanging per ogni modifica apportata a una colonna, immediatamente dopo la generazione dell'evento ColumnChanging. Se BeginEdit è stato chiamato prima dell'inserimento di modifiche, l'evento RowChanging viene generato solo quando si chiama il metodo EndEdit. L'evento passa la riga insieme a un valore che indica il tipo di operazione che sta per essere eseguita, ad esempio modifica, inserimento e così via. |
|
Una riga è stata modificata. L'evento passa la riga insieme a un valore che indica il tipo di operazione che sta per essere eseguita, ad esempio modifica, inserimento e così via. |
|
È in corso l'eliminazione di una riga. L'evento passa la riga insieme a un valore che indica il tipo di operazione che sta per essere eseguita, in questo caso l'eliminazione. |
|
Una riga è stata eliminata. L'evento passa la riga insieme a un valore che indica il tipo di operazione che sta per essere eseguita, in questo caso l'eliminazione. |
Gli eventi ColumnChanging, RowChanging e RowDeleting vengono generati durante il processo di aggiornamento. È possibile utilizzare questi eventi per convalidare i dati o per svolgere altri tipi di elaborazione. Poiché gli aggiornamenti vengono elaborati durante questi eventi, è possibile annullare l'aggiornamento lanciando un'eccezione, in modo da impedire il completamento della modifica.
Gli eventi ColumnChanged, RowChanged e RowDeleted sono eventi di notifica generati al termine dell'aggiornamento. sono utili quando si desidera svolgere ulteriori azioni basate su un aggiornamento completato con esito positivo.
Vedere anche
Attività
Procedura: connettersi ai dati di un database
Procedura: convalidare dati nel controllo DataGridView di Windows Form