Select the product you need help with
Aggiornamento di un database di SQL Server con l'oggetto SqlDataAdapter in Visual C# .NETIdentificativo articolo: 308507 - Visualizza i prodotti a cui si riferisce l?articolo. Questo articolo è stato precedentemente pubblicato con il codice di riferimento I308507 In questa paginaSommario
In questo articolo sono contenuti esempi di codice Microsoft Visual C# .NET che spiegano come utilizzare l'oggetto SqlDataAdapter per aggiornare un database di SQL Server in base alle modifiche apportate ai dati ed eseguite su un oggetto DataSet compilato con dati provenienti da una tabella del database.
RequisitiNell'elenco che segue vengono indicati l'hardware, il software, l'infrastruttura di rete, le conoscenze, le abilità e i service pack richiesti:
Descrizione della tecnicaL'oggetto SqlDataAdapter funge da ponte tra un oggetto ADO.NET DataSet e un database di SQL Server. SqlDataAdapter è un oggetto intermedio che consente di compilare un oggetto ADO.NET DataSet con dati recuperati da un database di SQL Server, quindi di aggiornare il database in base alle modifiche (inserimenti, aggiornamenti ed eliminazioni) apportate ai dati utilizzando l'oggetto DataSet.Le proprietà InsertCommand, UpdateCommand e DeleteCommand dell'oggetto SqlDataAdapter aggiornano il database con le modifiche ai dati eseguite su un oggetto DataSet. Tali proprietà sono oggetti SqlCommand che specificano i comandi INSERT, UPDATE e DELETE di Transact SQL, utilizzati per inserire le modifiche al dataset nel database di destinazione. Gli oggetti SqlCommand assegnati a queste proprietà possono essere creati manualmente nel codice o generati automaticamente mediante l'oggetto SqlCommandBuilder. Nel primo esempio di codice di questo articolo viene mostrato come utilizzare l'oggetto SqlCommandBuilder per generare automaticamente la proprietà UpdateCommand dell'oggetto SqlDataAdapter. Nel secondo esempio viene presentato un caso in cui non è possibile utilizzare la generazione automatica dei comandi. Vi viene mostrato come creare e utilizzare manualmente un oggetto SqlCommand come la proprietà UpdateCommand di un oggetto SqlDataAdapter. Creazione della tabella di SQL Server di esempioPer creare una tabella di SQL Server di esempio utilizzabile negli esempi di codice di Visual C# .NET riportati in questo articolo, attenersi alla seguente procedura:
Esempio di codice 1: Comandi generati automaticamenteSe l'istruzione SELECT utilizzata per recuperare i dati che popolano un DataSet si basa su una singola tabella di database, è possibile utilizzare l'oggetto CommandBuilder per generare automaticamente le proprietà DeleteCommand, InsertCommand e UpdateCommand di DataAdapter. In tal modo si semplifica e si riduce il codice necessario per eseguire operazioni INSERT, UPDATE e DELETE.Il requisito minimo esige l'impostazione della proprietà SelectCommand in modo che i comandi vengano generati automaticamente. Lo schema della tabella recuperato da SelectCommand determina la sintassi delle istruzioni INSERT, UPDATE e DELETE generate automaticamente. La proprietà SelectCommand deve inoltre restituire una chiave primaria o una colonna univoca. In assenza di tale chiave o colonna, verrà restituita un'eccezione InvalidOperation e i comandi non verranno generati. Per creare un'applicazione console di esempio di Visual C# .NET che dimostri l'utilizzo dell'oggetto SqlCommandBuilder per generare automaticamente le proprietà DeleteCommand, InsertCommand e UpdateCommand dell'oggetto SqlCommand per un oggetto SqlDataAdapter, attenersi alla procedura seguente:
Esempio di codice 2: Creazione ed inizializzazione manuale della proprietà UpdateCommandL'output generato dall'esempio di codice 2 indica che la logica per la generazione automatica di comandi per le istruzioni UPDATE è basata sulla concorrenza ottimistica. Ossia, i record non vengono bloccati per la modifica, e gli altri utenti o processi possono modificarli in qualsiasi momento.Poiché un record può essere modificato dopo essere stato restituito dall'istruzione SELECT ma prima dell'esecuzione dell'istruzione UPDATE, l'istruzione UPDATE generata automaticamente contiene una clausola WHERE tale da consentire l'aggiornamento di una riga solo se contiene tutti i valori originali. In tal modo si evita la sovrascrittura dei nuovi dati. Se un'istruzione UPDATE generata automaticamente tenta di aggiornare una riga eliminata o non contenente i valori originali di DataSet, il comando non incide su alcun record, e viene generata l'eccezione DBConcurrencyException. Per provare tutto ciò con il codice dell'esempio di codice 1, eseguire il codice in Visual Studio Debugger, impostare un punto di interruzione dopo la compilazione di DataSet ma prima dell'aggiornamento del database, quindi eliminare la riga della tabella derivante dall'Analizzatore query di SQL. La chiamata Update genera quindi l'eccezione. Se si desidera completare l'istruzione UPDATE a prescindere dai valori originali, è necessario impostare esplicitamente la proprietà UpdateCommand per DataAdapter senza fidarsi della generazione automatica dei comandi. Per creare e inizializzare manualmente la proprietà UpdateCommand dell'oggetto SqlDataAdapter utilizzato nell'esempio di codice 1, attenersi alla procedura seguente:
ProprietàIdentificativo articolo: 308507 - Ultima modifica: mercoledì 21 febbraio 2007 - Revisione: 3.2 Le informazioni in questo articolo si applicano a
LE INFORMAZIONI CONTENUTE NELLA MICROSOFT KNOWLEDGE BASE SONO FORNITE SENZA GARANZIA DI ALCUN TIPO, IMPLICITA OD ESPLICITA, COMPRESA QUELLA RIGUARDO ALLA COMMERCIALIZZAZIONE E/O COMPATIBILITA' IN IMPIEGHI PARTICOLARI. L'UTENTE SI ASSUME L'INTERA RESPONSABILITA' PER L'UTILIZZO DI QUESTE INFORMAZIONI. IN NESSUN CASO MICROSOFT CORPORATION E I SUOI FORNITORI SI RENDONO RESPONSABILI PER DANNI DIRETTI, INDIRETTI O ACCIDENTALI CHE POSSANO PROVOCARE PERDITA DI DENARO O DI DATI, ANCHE SE MICROSOFT O I SUOI FORNITORI FOSSERO STATI AVVISATI. IL DOCUMENTO PUO' ESSERE COPIATO E DISTRIBUITO ALLE SEGUENTI CONDIZIONI: 1) IL TESTO DEVE ESSERE COPIATO INTEGRALMENTE E TUTTE LE PAGINE DEVONO ESSERE INCLUSE. 2) I PROGRAMMI SE PRESENTI, DEVONO ESSERE COPIATI SENZA MODIFICHE, 3) IL DOCUMENTO DEVE ESSERE DISTRIBUITO INTERAMENTE IN OGNI SUA PARTE. 4) IL DOCUMENTO NON PUO' ESSERE DISTRIBUITO A SCOPO DI LUCRO. | Traduzione articoli
|


Torna all'inizio








