IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Windows Forms Discussion :

Récupérer la sortie de SQL Server dans un programme C#


Sujet :

Windows Forms

  1. #1
    Membre habitué Avatar de mioux
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Novembre 2005
    Messages
    367
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2005
    Messages : 367
    Points : 191
    Points
    191
    Par défaut Récupérer la sortie de SQL Server dans un programme C#
    Bonjour

    Je cherche comment récupérer les sorties "texte" de SQL Server dans un programme C#

    Je m'explique... J'ai (par exemple) une procédure stockée ressemblant à çà :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    PRINT 'Sélection'
     
    SELECT *
    FROM MaTable
    WHERE ID = 1
     
    PRINT 'Mise à jour'
     
    UPDATE MaTable
    SET NOM = 'Guerrin'
    WHERE ID = 1
    Dans SQL Server 2005 Management Studio (ou en lancant la procédure stockée par BCP), je peux voir l'avancement de ma procédure car il m'affiche

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Sélection
     
    (1*ligne(s) affectée(s))
    Mise à jour
     
    (1*ligne(s) affectée(s))
    texte qui, de plus apparait au fur et à mesure que la procédure s'exécute...

    Y a il moyen de récupérer ces infos ? Et y a il moyen de les récupérer au fur et à mesure qu'elles sont renvoyées par SQL Server ?

    EDIT : Je suis parti avec un SqlCommand, mais si ca se trouve je fais entièrement fausse route

  2. #2
    Membre extrêmement actif Avatar de fally
    Homme Profil pro
    Développeur .Net / BI
    Inscrit en
    Novembre 2007
    Messages
    966
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Bénin

    Informations professionnelles :
    Activité : Développeur .Net / BI

    Informations forums :
    Inscription : Novembre 2007
    Messages : 966
    Points : 1 173
    Points
    1 173
    Par défaut
    Je sais pas mais, un MessageBox?

  3. #3
    Membre habitué Avatar de mioux
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Novembre 2005
    Messages
    367
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2005
    Messages : 367
    Points : 191
    Points
    191
    Par défaut
    mon problème ce n'est pas de l'afficher (je travaille dans une console, donc MessageBox, j'oublie ), mais de récupérer la valeur renvoyée par SQL Server

  4. #4
    Membre extrêmement actif Avatar de fally
    Homme Profil pro
    Développeur .Net / BI
    Inscrit en
    Novembre 2007
    Messages
    966
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Bénin

    Informations professionnelles :
    Activité : Développeur .Net / BI

    Informations forums :
    Inscription : Novembre 2007
    Messages : 966
    Points : 1 173
    Points
    1 173
    Par défaut
    Citation Envoyé par mioux Voir le message
    mon problème ce n'est pas de l'afficher (je travaille dans une console, donc MessageBox, j'oublie ), mais de récupérer la valeur renvoyée par SQL Server
    ? Explique un peu

  5. #5
    Membre habitué Avatar de mioux
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Novembre 2005
    Messages
    367
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2005
    Messages : 367
    Points : 191
    Points
    191
    Par défaut
    Ah oui tiens au fait, j'ai trouvé ma solution

    J'ai eu raison d'arrêter de chercher sur l'objet SqlCommand... la solution est dans SqlConnection

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SqlConnection ACSDB = new SqlConnection(connectionString);
    ACSDB.InfoMessage += new SqlInfoMessageEventHandler(ACSDB_OnInfoMessage);
    avec bien sûr

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    static void ACSDB_OnInfoMessage(object sender, SqlInfoMessageEventArgs e)
    {
        Console.WriteLine(e.Message);
    }
    Les seuls messages que l'on reçoit sont les print, les warning et les erreurs, mais pour mon utilisation c'est suffisant, vu que je cherchais à stresser SQL Server et voir comment est géré la concurence.

    PS : En revanche, ce n'est pas utilisable en mode asynchrone et la connexion revoit tout les messages en 1x, et ça ça me gêne... car j'aurai voulu voir les messages en "temps réel"... mais bon ça nous a suffi pour nos tests

  6. #6
    Membre extrêmement actif Avatar de fally
    Homme Profil pro
    Développeur .Net / BI
    Inscrit en
    Novembre 2007
    Messages
    966
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Bénin

    Informations professionnelles :
    Activité : Développeur .Net / BI

    Informations forums :
    Inscription : Novembre 2007
    Messages : 966
    Points : 1 173
    Points
    1 173
    Par défaut
    Voila qui est parfait; merci

  7. #7
    En attente de confirmation mail
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    171
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 171
    Points : 122
    Points
    122
    Par défaut
    Ah bin ça ça tombe bien alors, c'est exactement ce que je cherchais
    Pas facile de taper les bons mots dans Google par contre.

    Au fait, tu peux faire un SET NOCOUNT ON dans ton script SQL si tu veux pas qu'il affiche les messages du genre (1*ligne(s) affectée(s))

  8. #8
    En attente de confirmation mail
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    171
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 171
    Points : 122
    Points
    122
    Par défaut
    Pour voir les messages en temps réel, tu peux faire ceci dans SQL :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    select @msg = 'my message'
    raiserror (@msg, 0, 1) with nowait

  9. #9
    Membre habitué Avatar de mioux
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Novembre 2005
    Messages
    367
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2005
    Messages : 367
    Points : 191
    Points
    191
    Par défaut
    Pour moi en particulier, avoir les messages en décalés m'a suffit...

    En fait, je devrais marquer ce post résolu, vu que mon stresseur n'est plus utile maintenant que j'ai effectué mes tests

    EDIT : Il était déjà résolu

  10. #10
    En attente de confirmation mail
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    171
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 171
    Points : 122
    Points
    122
    Par défaut
    C'est résolu ? T'es sûr ?

    Juste pour info, il faut aussi faire une ptite manip C# pour catcher les messages SQL en live :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    connection.FireInfoMessageEventOnUserErrors = true;
    Et voilà

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Récupérer les lignes d'une procédure SQL Server dans le programme VB.NET
    Par Mikelester12 dans le forum Accès aux données
    Réponses: 2
    Dernier message: 30/07/2007, 11h33
  2. Lier une table sql server dans access
    Par PICANTO dans le forum Access
    Réponses: 1
    Dernier message: 11/04/2007, 11h42
  3. Intégrer base de test SQL Server dans Oracle 10g
    Par tedparker dans le forum Oracle
    Réponses: 3
    Dernier message: 10/01/2007, 15h03
  4. Récupérer les données Insert - SQL Server 2000
    Par jfc dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 19/04/2006, 07h47
  5. SQL Server dans un environnement CITRIX
    Par captainamerica75 dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 23/02/2006, 13h36

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo