Les développeurs s'efforcent de bien gérer l'inattendu, de sorte que les utilisateurs n'ont pas à s'inquiéter céleste ressemblant à des messages d'erreur système. Pour cette raison, la gestion des exceptions, est chaque applications. NET d'une pièce standard. Essayez / bloc catch vous permet de capturer des exceptions et l'application de contrôle du point de mise en œuvre. Interagir avec la base de données se produit lorsque beaucoup d'erreurs, mais les développeurs ne savent pas comment traiter avec la couche de base de données d'une erreur. Dans cet article, nous allons explorer la façon d'utiliser SQL Server et le code T-SQL pour gérer les erreurs dans votre base de données.
Gestion des erreurs dans T-SQL
dialogue de SQLServer SQL vous permet de gérer facilement le processus peut être stockée, une fonction par erreur non fatale s'est produite, mais pas toutes les erreurs sont plus faciles à manipuler. En fait, des erreurs fatales et non fatales sont nombreux. Ce qui est fatal, ce non-mortels, ce n'est pas très bien documenté, mais votre code d'application peut toujours utiliser bloc try / catch pour gérer les erreurs de base de données fatale. Pour toutes les autres erreurs, vous pouvez utiliser les techniques suivantes.
Services
Vous devez utiliser le code de transaction dans la base de données pour s'assurer que tout n'est pas un problème lorsque tous les changements ont été accomplies. Aide SQLServer en ligne à la tâche d'une opération décrite comme une unité logique, qui consiste en une série de déclarations (SELECT, INSERT, UPDATE ou DELETE, etc.) Si l'opération n'a pas eu lieu au cours de toute erreur, puis tous les changements de la transaction deviendra un élément permanent de la base de données. Si une erreur se produit durant cette période et ne sera pas apporter des modifications à la base de données.
Services inclus dans la transaction BEGIN et END TRANSACTION entre les deux. instruction ROLLBACK TRANSACTION pouvez annuler tous les changements, de sorte que tout changement ne se produira pas. instruction COMMIT TRANSACTION peut être utilisé pour des changements permanents. Maintenant, concentrons-nous sur la façon de traiter les erreurs T-SQL dans le fichier.
@ @ Error
Fonction d'erreur @ @ pour que vous puissiez mettre en œuvre la gestion des erreurs T-SQL. Il sera de retour le code d'erreur renvoyé par le système. Si aucune erreur n'est renvoyée «0». Fonction d'erreur @ @ doit être immédiatement appelée immédiatement après une déclaration, parce que ce sera après chaque instruction T-SQL être supprimé.
RAISERROR
instruction RAISERROR vous permet de générer un message d'erreur personnalisés ou utiliser un formulaire à l'intérieur a été sysmessages nouvelles. Vous pouvez consulter en ligne sa syntaxe, mais sa forme la plus courante comprend un message (message personnalisé) ou ID de message (pour les sources existantes) et de sa gravité et de l'Etat. SQLServer ne pas utiliser l'état, si légèrement passés à un numéro spécifique. Sévérité que la gravité de l'erreur de 0 à-18 utilisateurs, tandis que les 19-25 réservée aux administrateurs.
Dans la liste A, l'échantillon procédure stockée utilisée pour mettre à jour ces caractéristiques d'un échantillon Northwind enregistrement de la base:
CREATE PROCEDURE sp_UpdateCustomerPhone (@ id nvarchar (5), nvarchar @ téléphone (24), @ sortie retvalueint) ASBEGINBEGIN TRANSACTIONUPDATE [dbo]. [Clients] SET [Téléphone] = téléphone @ WHERE ([Code client] = @ id) IF (@ @ ERROR 0) - une valeur non-négative signale une TRANSACTION errorBEGINROLLBACK - changements ne sont pas permanentRAISERROR («Les clients de mise à jour d'erreur", 1,1) - soulèvent un message d'erreur personnalisé - message d'erreur personnalisé s'affiche si courir à partir de consoleSET @ retvalue valeur de retour = -1 - négatif à signalproblemsENDCOMMIT TRANSACTION - rendre les modifications permanentes, de sorte enregistrement est updatedSET @ retvalue = 1 - une valeur de retour positive signalssuccessRETURNEND
Liste A
Si aucune erreur ne survient, il a pris le numéro de téléphone indiqué est réglé à une valeur passée à la procédure. Il utilise un paramètre de valeur de retour, s'il ya des problèmes il retourne une valeur négative, si toutes les choses avec la mise en œuvre du pas de problèmes, il sera de retour positif.
Utilisant les valeurs de retour de procédure
Grâce à la valeur de retour de procédure stockée, nous pouvons l'utiliser dans notre code. NET depuis des années. objet SqlCommand vous permet d'ajouter facilement un paramètre à la procédure et stocker la valeur de retour. Les paramètres de la propriété Direction est utilisé pour recevoir la valeur de l'appel de procédure stockée. Elle comporte deux valeurs de propriété: InputOutput et de sortie. Dans notre exemple, nous allons utiliser la sortie pour recevoir la valeur de l'État.
Ce code est une page ASP.NET simple pour la base de données Northwind est utilisé pour transférer un client à une table de données dans la nouvelle valeur. La valeur id est effectivement stockée dans un champ caché où vous pouvez facilement passer à la forme, mais ce domaine est utilisé pour décrire l'. Entrez la valeur dans le champ de texte est utilisé pour mettre à jour la table de la base où le champ de numéro de téléphone.
Paramètre est ajouté à l'objet SqlCommand (ils doivent être précisément aux paramètres de procédure stockée). Commande par la méthode ExecuteNonQuery de l'objet SqlCommand est exécuté. Une fois qu'il a été exécuté, la valeur de retour peut être de récupérer les paramètres.
Code vérifie la valeur de retour (-1 indique un problème), et un message sera affiché dans un contrôle Label po En outre, un essai / bloc catch est utilisé pour capturer l'interaction avec la base de données qui peuvent survenir pendant le fonctionnement de toute erreur fatale. Voir la liste B:
Nouveau numéro: OnCommand = "btnUpdatePhone_Click" runat = "server" / ALFKI
Liste B
Liste C dans le code correspondant VB.NET:
Nouveau numéro: OnCommand = "btnUpdatePhone_Click" runat = "server" / ALFKI
Liste C
La base de données couvre tous les
Employée bloc try / catch pour gérer. NET code de l'application de l'exception est un processus simple, mais vous pouvez suivre l'exception couche de base de données. SQLServer exception du langage T-SQL de manipulation de code pour vous fournir tout ce dont vous avez besoin.