2009-06-01 11 views
4

J'interagis avec SQL Server 2005 depuis un JSP via JDBC (ceci n'est pas un projet réel) et j'ai créé un trigger dans la base de données que j'utilise . Si une certaine condition n'est pas remplie quand ce déclencheur s'exécute, je déclenche une erreur via raiserror(). Je voudrais que cette erreur soit affichée sur la page réelle qui appelle la requête SQL Server via JDBC, mais actuellement je reçois le message par défaut suivant lorsque j'imprime le résultat de SQLException.getMessage():Comment afficher le message d'erreur généré à partir de raiserror() avec SQL Server

La transaction terminé dans le déclencheur. Le lot a été annulé.

Est-ce que quelqu'un sait comment extraire le texte que j'ai passé à raiserror dans mon code de déclenchement? Je l'ai déjà essayé:

  • SQLException.getState()
  • SQLException.getNextException()
  • SQLException.getCause()
  • SQLException.toString()

Répondre

8

Je l'ai compris. Le problème était lié à la gravité que je choisissais en appelant raiserror(). Je passais en 10 pour cet argument car j'avais vu un exemple qui mettait 10 là, mais pour que le texte d'erreur soit passé à l'exception SQLException, la gravité doit être 11 ou plus. Après avoir changé la gravité, tout fonctionne bien. Si quelqu'un d'autre a un problème similaire, je vous recommande d'essayer cela. Aussi la gestion des erreurs google JDBC pour la documentation utile (je voudrais soumettre un lien, mais les nouveaux utilisateurs ne sont pas autorisés).

0

Vous devez itérer toutes les exceptions renvoyées avec getNextException()

+0

Merci pour la réponse. J'ai essayé cela, mais malheureusement il semble qu'il n'y ait pas d'autres exceptions car quand j'appelle getNextException(), il retourne null. – BordrGuy108

+0

Avez-vous des BEGIN TRY/BEGIN CATCH dans votre SQL ou dans vos procédures? –

+0

J'ai un bloc try/catch dans mon jsp où j'attrape une SQLException. Je n'ai pas un BEGIN TRY ou BEGIN CATCH ou quelque chose comme ça dans mon SQL. – BordrGuy108