Processo lo strato di dati utilizzando SQL Server Error



Gli sviluppatori cercano di gestire correttamente l'imprevisto, in modo che gli utenti non devono preoccuparsi di messaggi di sistema celeste-come errore. Per questo motivo, la gestione delle eccezioni è l'uno. NET una parte standard. Blocco try / catch consente di intercettare le eccezioni e le applicazioni di controllo dal punto di attuazione. Interagire con il database si verifica quando un sacco di errori, ma molti sviluppatori non sanno come trattare con i layer di database di un errore. In questo articolo vedremo come utilizzare SQLServer e il codice T-SQL per gestire gli errori nel database.

La gestione degli errori in T-SQL

dialogo SQL SQLServer vi permette di gestire facilmente il processo può essere memorizzato, funzione per errore non fatale si è verificato, ma non tutti gli errori sono più facili da gestire. In realtà, gli errori fatali e non fatali sono molti. Che cosa è fatale, ciò che non-fatale, questo non è molto ben documentato, ma il codice dell'applicazione può sempre usare blocco try / catch per gestire gli errori fatali di database. Per tutti gli altri errori, è possibile utilizzare le seguenti tecniche.

Servizi

È necessario utilizzare il codice di transazione nel database per assicurarsi che tutto sia un problema di tutti quando le modifiche sono state completate. contribuire a SQLServer-line al compito di un'operazione descritta come una unità logica, che consiste di una serie di istruzioni (selezionare, inserire, aggiornare o eliminare, ecc.) Se la transazione non viene corrisposto in alcun errore, quindi tutte le modifiche della transazione diventerà parte permanente del database. Se si verifica un errore durante questo periodo e non apportare alcuna modifica al database.

Servizi inclusi nella transazione istruzioni BEGIN ed END TRANSACTION mezzo. ROLLBACK TRANSACTION possibile annullare tutte le modifiche, le modifiche non si verificherà. istruzione COMMIT TRANSACTION possono essere utilizzati per la modifica permanente. Ora, dobbiamo concentrarci su come trattare gli errori T-SQL in.

@ @ ERROR

@ @ funzione di errore in modo che è possibile implementare la gestione degli errori T-SQL. Ritornerà il codice di errore restituito dal sistema. Se nessun errore viene restituito "0". @ @ funzione di errore deve essere immediatamente chiamato immediatamente dopo una dichiarazione, perché sarà dopo ogni istruzione T-SQL essere rimossi.

RAISERROR

dichiarazione RAISERROR consente di generare un messaggio di errore o di utilizzare un modulo al suo interno è stata notizie sysmessages. È possibile visualizzare la sua linea di sintassi, ma la sua forma più elementare contiene un messaggio (per il messaggio personalizzato) o id del messaggio (per le fonti esistenti) e la sua gravità e lo stato. SQLServer non usa stato, così alla leggera passata di un numero su di esso. Gravità che la gravità dell'errore da 0 a 18 utenti, mentre il 19-25 riservati per gli amministratori.

Nella lista A, il campione di stored procedure utilizzate per aggiornare questi dispone di un record del database di esempio Northwind:

Sp_UpdateCustomerPhone CREATE PROCEDURE (@ id nvarchar (5), @ nvarchar telefono (24), @ uscita retvalueint) ASBEGINBEGIN TRANSACTIONUPDATE [dbo]. [Clienti] SET [Telefono] = @ telefono WHERE ([CustomerID] = @ id) IF (@ @ ERROR 0) - un valore non negativo segnala un TRANSAZIONE errorBEGINROLLBACK - le modifiche non sono permanentRAISERROR ('Errore di aggiornamento del cliente', 1,1) - sollevare un messaggio di errore personalizzato - messaggio di errore personalizzato viene visualizzato se eseguito da consoleSET @ retvalue = -1 - valore di ritorno negativo per signalproblemsENDCOMMIT transazione - rendere permanenti le modifiche, in modo da registrare è updatedSET @ retvalue = 1 - un valore di rendimento positivo signalssuccessRETURNEND

Elenco A

Se nessun errore, ha preso il numero di telefono di cui è impostato su un valore passato al processo. Esso utilizza un parametro di valore di ritorno, se ci sono problemi che restituisce un valore negativo, se tutte le cose con l'attuazione di alcun problema, esso restituirà un positivo.

Utilizzo di stored procedure valori di ritorno

Attraverso il valore di stored procedure di rimpatrio, lo possiamo utilizzare nel nostro. NET per anni. oggetto SqlCommand ti permette di aggiungere facilmente un parametro per il processo e memorizzare il valore di ritorno. Parametri della proprietà Direction è utilizzato per ricevere il valore chiamata stored procedure. Essa ha due valori di proprietà: InputOutput e Output. Nel nostro esempio, useremo l'uscita di ricevere valore di stato.

Questo codice è una pagina ASP.NET semplice per il database Northwind è usato per trasferire un cliente a una tabella di dati nel nuovo valore. Il valore id è effettivamente memorizzato in un campo nascosto dove si può facilmente passare alla forma, ma questo campo è utilizzato per descrivere la. Immettere il valore nel campo di testo viene utilizzato per aggiornare la tabella del database in cui il campo numero di telefono.

Parametro viene aggiunto l'oggetto SqlCommand (devono essere accuratamente soddisfare i parametri di stored procedure). Comando attraverso il metodo ExecuteNonQuery dell'oggetto SqlCommand viene eseguito. Una volta eseguito, il valore restituito può essere parametri da recuperare.

Codice verifica il valore di ritorno (-1 indicato un problema), e un messaggio verrà visualizzato in un controllo Label a. Inoltre, un blocco try / catch viene utilizzato per catturare l'interazione con il database che possono verificarsi durante il funzionamento di eventuali errori fatali. Vedi la lista B:

Nuovo Numero: OnCommand = "" btnUpdatePhone_Click runat = "server" / ALFKI

Elenco B

Lista C il codice corrispondente VB.NET:

Nuovo Numero: OnCommand = "" btnUpdatePhone_Click runat = "server" / ALFKI

Lista C

La banca dati copre tutti

Usato try / blocco catch per gestire. NET in codice l'eccezione è un processo semplice, ma è possibile monitorare l'eccezione layer di database. eccezione linguaggio T-SQL SQLServer per la manipolazione del codice di fornire tutto il necessario.