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

Services Web Discussion :

Afficher les messages SQL récupéré par un WebService dans mon client


Sujet :

Services Web

  1. #1
    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 Afficher les messages SQL récupéré par un WebService dans mon client
    Bonjour,

    J'essaie de faire un truc un peu compliqué... et je ne suis pas loin du but !

    J'ai une appli WebForm (C# 2.0) qui va chercher ses données en base SQL Server 2005 via un WebService (C# 2.0). Il n'y a donc pas d'accès direct entre l'appli et la base, le WebService jouant le rôle de proxy.

    Le but est d'exécuter une procédure stockée et d'afficher dans mon client les messages d'information de la proc stock en temps réel dans mon client.

    Je suis arrivé à le faire quand mon client est directement connecté à la base (grâce à ce thread : http://www.developpez.net/forums/d60...gramme-csharp/)

    Par contre, avec le WebService au milieu, ça ne fonctionne pas entièrement.
    Je me suis beaucoup inspiré de l'article ici :
    http://www.codeproject.com/KB/webser...ithEvents.aspx

    --------

    Au cas où ça pourrait aider, voici mon code.
    Partie serveur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
      private static string _message;
     
      /// <summary>
      /// Launches batches
      /// </summary>
      [WebMethod]
      public void Batches_Launcher()
      {
        using (SqlConnection connection = new SqlConnection(ConfigurationManager.ConnectionStrings["GAIA"].ConnectionString))
        {
          connection.Open();
          connection.FireInfoMessageEventOnUserErrors = true;
          connection.InfoMessage += new SqlInfoMessageEventHandler(connection_InfoMessage);
     
          SqlCommand cmd = new SqlCommand("exec dbo.batches_Launcher null, '2008-10-15', '2008-06-30', 1", connection);
          cmd.CommandTimeout = 3600;
          cmd.ExecuteNonQuery();
          connection.Close();
        }
      }
     
      /// <summary>
      /// 
      /// </summary>
      private void connection_InfoMessage(object sender, SqlInfoMessageEventArgs e)
      {
        _message = e.Message;
        _client.GetActiveClientsCompleted.Set();
      }
     
      /// <summary>
      /// 
      /// </summary>
      [WebMethod]
      public string GetMessage()
      {
        _client.GetActiveClientsCompleted.WaitOne();
        return "ok : " + _message;
      }
     
      private static ClientState _client = new ClientState();
      /// <summary>
      /// 
      /// </summary>
      private class ClientState
      {
        public System.Threading.AutoResetEvent GetActiveClientsCompleted = new System.Threading.AutoResetEvent(false);
      }
    Partie client
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
        Service service = new Service();
     
        /// <summary>
        /// Estimates and displays duration
        /// </summary>
        private void EstimateDuration()
        {
          Service service = new Service();
          service.GetMessageCompleted += new GetMessageCompletedEventHandler(service_GetMessageCompleted);
     
          service.Batches_Launcher();
          service.GetMessageAsync();
        }
     
        /// <summary>
        /// 
        /// </summary>
        void service_GetMessageCompleted(object sender, GetMessageCompletedEventArgs e)
        {
          textBox1.AppendText(e.Result + Environment.NewLine);
          service.GetMessageAsync();
        }
    Désolé pour les variables et classe dont vous ne voyez pas la déclaration.
    Mais globalement, mon code fonctionne puisque dans mon client le dernier message renvoyé pas SQL s'affiche bien. Mais les messages d'avant qui devraient apparaître les uns après les autres et espacés de qq secondes ne s'affichent pas...

    Merci bien pour votre aide

  2. #2
    Membre du Club
    Inscrit en
    Octobre 2008
    Messages
    111
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 111
    Points : 44
    Points
    44
    Par défaut
    Nobody knows ?

Discussions similaires

  1. Réponses: 0
    Dernier message: 05/11/2014, 10h11
  2. Réponses: 2
    Dernier message: 27/09/2006, 11h35
  3. Afficher les messages d'exécution
    Par batama dans le forum API standards et tierces
    Réponses: 3
    Dernier message: 02/05/2006, 18h42
  4. [Query Analyser] Comment supprimer les message sql server
    Par Cyborg289 dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 15/02/2006, 16h14
  5. Afficher les doublons SQL
    Par kotoji dans le forum Langage SQL
    Réponses: 2
    Dernier message: 13/01/2005, 17h32

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