Maison >développement back-end >C++ >Comment pouvons-nous capturer la sortie d'impression d'une procédure stockée T-SQL dans .NET ?

Comment pouvons-nous capturer la sortie d'impression d'une procédure stockée T-SQL dans .NET ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2025-01-17 16:26:11978parcourir

How Can We Capture Print Output from a T-SQL Stored Procedure in .NET?

Récupération de la sortie d'impression à partir de procédures stockées T-SQL dans les applications .NET

La migration d'applications héritées implique souvent la gestion de procédures stockées T-SQL qui utilisent des instructions PRINT pour le rapport d'erreurs ou les messages d'information. Cet article montre comment capturer cette PRINT sortie dans un environnement .NET.

Capturer PRINT Résultat : une solution réalisable

Récupérer la sortie des instructions PRINT à partir d'une procédure stockée T-SQL dans votre application .NET est réalisable. Ceci est crucial pour accéder aux informations de débogage ou aux messages d'erreur intégrés dans la logique de la procédure.

Implémentation C# : gestion des événements

La solution consiste à s'abonner à l'événement InfoMessage de l'objet de connexion à la base de données. Voici un exemple de code C# :

<code class="language-csharp">myConnection.InfoMessage += new SqlInfoMessageEventHandler(myConnection_InfoMessage);

void myConnection_InfoMessage(object sender, SqlInfoMessageEventArgs e)
{
    // Process the captured print message
    Console.WriteLine(e.Message); 
}</code>

Répartition des codes :

  • myConnection : Représente la connexion à la base de données utilisée pour exécuter la procédure stockée.
  • Événement
  • InfoMessage : cet événement se déclenche chaque fois que le serveur de base de données envoie un message d'information, y compris une sortie PRINT.
  • e.Message : Cette propriété contient le contenu de la déclaration PRINT.

Exemple illustratif : procédure stockée et code C#

Considérons une procédure stockée simple qui imprime un message :

<code class="language-sql">CREATE PROCEDURE usp_PrintMessage
AS
    PRINT 'This is a test message.';</code>

Le code C# correspondant pour exécuter cette procédure et capturer la PRINT sortie est :

<code class="language-csharp">SqlCommand cmd = new SqlCommand("usp_PrintMessage", myConnection);
cmd.CommandType = CommandType.StoredProcedure;

cmd.InfoMessage += myConnection_InfoMessage; // Subscribe to the event

cmd.ExecuteNonQuery(); // Execute the stored procedure

// The print message will be displayed on the console.</code>

En vous abonnant à l'événement InfoMessage, votre application C# intercepte et traite efficacement la sortie PRINT générée par la procédure stockée, permettant une gestion robuste des erreurs et une journalisation informative.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn