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

VB.NET Discussion :

Exception "CommunicationException occurred"


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2012
    Messages
    55
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2012
    Messages : 55
    Par défaut
    Salut à tous,

    J'ai un petit problème avec une méthode qui me lève cette exception:
    ->
    CommunicationException occurred
    De base, j'ai cette méthode qui renvoie un boolean, et tout marche impec:
    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
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    Public Function Read() As Boolean Implements IService1.Read
            Try
                Dim dtmCurrentDate As DateTime = DateTime.Now
                Dim connection As New clsConnectionBD()
                connection.ConnectionString = "Data Source=NICOLEDE;Persist Security Info=True;User ID=***;Password=****;"
                connection.Type = clsConnectionBD.BDDType.Oracle
                _configMA.PathMeta = "C:\DEV_5\Meta Analysis Dev\"
                _configMA.TypeAppli = clsAppli.Type.MetaService
                '_configMA.PathMeta = "C:\DEV_5\Meta Analysis Dev\"
                connection.Open()
                If connection.IsConnected = False Then
                    _elgEvent.WriteEntry("Connexion à la base impossible : " + connection.ConnectionString, EventLogEntryType.Error)
                    Return False
                End If
                Dim reader As DbDataReader
                reader = connection.ExecSelectToDR("SELECT IDE_PLN, ALIAS, DAYS, HOURS, IDE_PRJ,APPLICATION, ARGS, IDE_LANG, USR_LOG_PLN, USR_LOG_EXE FROM T_PLN")
                Dim noAppli As Boolean = False
                If reader.HasRows = True Then
                    Do While reader.Read()
                        Dim converter As clsConverterRunner = Nothing
                        noAppli = False
                        Select Case reader("APPLICATION").ToString()
                            'Ajouter les connectivités ici.
                            Case BOXIUNV_APPLICATION
                                converter = New clsBOXIUnvConverterRunner(_elgEvent)
                            Case BOXIDOC_APPLICATION
                                converter = New clsBOXIDocConverterRunner(_elgEvent)
                            Case ORACLE_APPLICATION
                                converter = New clsOracleConverterRunner(_elgEvent)
                            Case SQLSERVER_APPLICATION
                                converter = New clsSQLServerConverterRunner(_elgEvent)
                            Case SYBASEIQ_APPLICATION
                                converter = New clsSyBaseIQConverterRunner(_elgEvent)
                            Case DELETE_APPLICATION
                                converter = New clsPlanifDeleteLogRunner(_elgEvent)
                            Case GENIO_APPLICATION
                                converter = New clsGenioConverterRunner(_elgEvent)
                            Case POWER_AMC_APPLICATION
                                converter = New clsPowerAmcConverterRunner(_elgEvent)
                            Case COGNOS_APPLICATION
                                converter = New clsCognosConverterRunner(_elgEvent)
                            Case TALEND_APPLICATION
                                converter = New clsTalendConverterRunner(_elgEvent)
                            Case Else
                                noAppli = True
                        End Select
                        If noAppli = False Then
                            converter.ConfigMA = _configMA
                            converter.IdePln = reader("IDE_PLN").ToString()
                            converter.AliasName = reader("ALIAS").ToString()
                            converter.IdePrj = reader("IDE_PRJ").ToString()
                            converter.Days = reader("DAYS").ToString()
                            If converter.IsStartNow Then
                                converter.UserLoginExe = reader("USR_LOG_EXE").ToString()
                            End If
                            converter.Hours = reader("HOURS").ToString()
                            converter.IdeLangue = reader("IDE_LANG").ToString()
                            converter.UserLoginPln = reader("USR_LOG_PLN").ToString()
     
                            If converter.InitWith(reader("ARGS").ToString()) Then
                                If converter.IsOkToConvert(dtmCurrentDate) Then
                                    updateDaysStatus(converter)
                                    If Not FifoContains(converter) Then
                                        _fifoConverterRunners.Enqueue(converter)
                                    End If
                                End If
                            End If
                        End If
                    Loop
                End If
                connection.Close()
                Return True
            Catch ex As Exception
                _elgEvent.WriteEntry(ex.Message + " " + ex.StackTrace, EventLogEntryType.Error)
            End Try
        End Function
    Mais à la place de renvoyer un booléen, je voudrai renvoyer un converter:
    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
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    Public Function Read() As clsConverterRunner Implements IService1.Read
            Try
                Dim dtmCurrentDate As DateTime = DateTime.Now
                Dim connection As New clsConnectionBD()
                connection.ConnectionString = "Data Source=NICOLEDE;Persist Security Info=True;User ID=***;Password=***;"
                connection.Type = clsConnectionBD.BDDType.Oracle
                _configMA.PathMeta = "C:\DEV_5\Meta Analysis Dev\"
                _configMA.TypeAppli = clsAppli.Type.MetaService
                '_configMA.PathMeta = "C:\DEV_5\Meta Analysis Dev\"
                connection.Open()
                If connection.IsConnected = False Then
                    _elgEvent.WriteEntry("Connexion à la base impossible : " + connection.ConnectionString, EventLogEntryType.Error)
                    ' Return False
                End If
                Dim reader As DbDataReader
                reader = connection.ExecSelectToDR("SELECT IDE_PLN, ALIAS, DAYS, HOURS, IDE_PRJ,APPLICATION, ARGS, IDE_LANG, USR_LOG_PLN, USR_LOG_EXE FROM T_PLN")
                Dim noAppli As Boolean = False
                If reader.HasRows = True Then
                    Do While reader.Read()
                        Dim converter As clsConverterRunner = Nothing
                        noAppli = False
                        Select Case reader("APPLICATION").ToString()
                            'Ajouter les connectivités ici.
                            Case BOXIUNV_APPLICATION
                                converter = New clsBOXIUnvConverterRunner(_elgEvent)
                            Case BOXIDOC_APPLICATION
                                converter = New clsBOXIDocConverterRunner(_elgEvent)
                            Case ORACLE_APPLICATION
                                converter = New clsOracleConverterRunner(_elgEvent)
                            Case SQLSERVER_APPLICATION
                                converter = New clsSQLServerConverterRunner(_elgEvent)
                            Case SYBASEIQ_APPLICATION
                                converter = New clsSyBaseIQConverterRunner(_elgEvent)
                            Case DELETE_APPLICATION
                                converter = New clsPlanifDeleteLogRunner(_elgEvent)
                            Case GENIO_APPLICATION
                                converter = New clsGenioConverterRunner(_elgEvent)
                            Case POWER_AMC_APPLICATION
                                converter = New clsPowerAmcConverterRunner(_elgEvent)
                            Case COGNOS_APPLICATION
                                converter = New clsCognosConverterRunner(_elgEvent)
                            Case TALEND_APPLICATION
                                converter = New clsTalendConverterRunner(_elgEvent)
                            Case Else
                                noAppli = True
                        End Select
                        If noAppli = False Then
                            converter.ConfigMA = _configMA
                            converter.IdePln = reader("IDE_PLN").ToString()
                            converter.AliasName = reader("ALIAS").ToString()
                            converter.IdePrj = reader("IDE_PRJ").ToString()
                            converter.Days = reader("DAYS").ToString()
                            If converter.IsStartNow Then
                                converter.UserLoginExe = reader("USR_LOG_EXE").ToString()
                            End If
                            converter.Hours = reader("HOURS").ToString()
                            converter.IdeLangue = reader("IDE_LANG").ToString()
                            converter.UserLoginPln = reader("USR_LOG_PLN").ToString()
     
     
                            If converter.InitWith(reader("ARGS").ToString()) Then
                                If converter.IsOkToConvert(dtmCurrentDate) Then
                                    updateDaysStatus(converter)
                                    If Not FifoContains(converter) Then
                                        _fifoConverterRunners.Enqueue(converter)
                                    End If
                                End If
                            End If
                        End If
                        Return converter
                    Loop
                End If
                connection.Close()
                'Return true
            Catch ex As Exception
                _elgEvent.WriteEntry(ex.Message + " " + ex.StackTrace, EventLogEntryType.Error)
            End Try
        End Function
    Lorsque j'execute le 2ème bout de code, j'ai l'exception de levé.
    Je ne comprends pas bien d'ou cela peut bien venir ?

    D'avance merci pour l'aide apportée


  2. #2
    Membre émérite
    Avatar de Gurdil le nain
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Avril 2009
    Messages
    468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2009
    Messages : 468
    Par défaut
    Bonjour,

    Pour commencer, ton code ne fermera jamais proprement ta connexion à la base de données puisque s'il passe dans la boucle il va sortir de la méthode avant la fermeture.

    Ensuite, tu ne fermes pas ton reader non plus...

    Essayes déjà d'adapter ton code afin que quoiqu'il se passe, ces deux objets soient bien fermés...

  3. #3
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2012
    Messages
    55
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2012
    Messages : 55
    Par défaut
    Salut,

    Merci pour ta réponse.
    A la place de renvoyer le converter du type clsConverterRunner, j'ai voulu renvoyer le converter sous forme de chaîne de caractère.

    Voici donc l'implémentation:
    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
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    Public Function Read() As String Implements IService1.Read
            Try
                Dim dtmCurrentDate As DateTime = DateTime.Now
                Dim connection As New clsConnectionBD()
                connection.ConnectionString = "Data Source=NICOLEDE;Persist Security Info=True;User ID=metaV5;Password=metaV5;"
                connection.Type = clsConnectionBD.BDDType.Oracle
                _configMA.PathMeta = "C:\DEV_5\Meta Analysis Dev\"
                _configMA.TypeAppli = clsAppli.Type.MetaService
                '_configMA.PathMeta = "C:\DEV_5\Meta Analysis Dev\"
                connection.Open()
                If connection.IsConnected = False Then
                    _elgEvent.WriteEntry("Connexion à la base impossible : " + connection.ConnectionString, EventLogEntryType.Error)
                    '  Return False
                End If
                Dim reader As DbDataReader
                reader = connection.ExecSelectToDR("SELECT IDE_PLN, ALIAS, DAYS, HOURS, IDE_PRJ,APPLICATION, ARGS, IDE_LANG, USR_LOG_PLN, USR_LOG_EXE FROM T_PLN")
                Dim noAppli As Boolean = False
                Dim converter As clsConverterRunner = Nothing   'visibilité du converter -> valeur de retour
                If reader.HasRows = True Then
                    Do While reader.Read()
                        ' Dim converter As clsConverterRunner = Nothing
                        noAppli = False
                        Select Case reader("APPLICATION").ToString()
                            'Ajouter les connectivités ici.
                            Case BOXIUNV_APPLICATION
                                converter = New clsBOXIUnvConverterRunner(_elgEvent)
                            Case BOXIDOC_APPLICATION
                                converter = New clsBOXIDocConverterRunner(_elgEvent)
                            Case ORACLE_APPLICATION
                                converter = New clsOracleConverterRunner(_elgEvent)
                            Case SQLSERVER_APPLICATION
                                converter = New clsSQLServerConverterRunner(_elgEvent)
                            Case SYBASEIQ_APPLICATION
                                converter = New clsSyBaseIQConverterRunner(_elgEvent)
                            Case DELETE_APPLICATION
                                converter = New clsPlanifDeleteLogRunner(_elgEvent)
                            Case GENIO_APPLICATION
                                converter = New clsGenioConverterRunner(_elgEvent)
                            Case POWER_AMC_APPLICATION
                                converter = New clsPowerAmcConverterRunner(_elgEvent)
                            Case COGNOS_APPLICATION
                                converter = New clsCognosConverterRunner(_elgEvent)
                            Case TALEND_APPLICATION
                                converter = New clsTalendConverterRunner(_elgEvent)
                            Case Else
                                noAppli = True
                        End Select
                        If noAppli = False Then
                            converter.ConfigMA = _configMA
                            converter.IdePln = reader("IDE_PLN").ToString()
                            converter.AliasName = reader("ALIAS").ToString()
                            converter.IdePrj = reader("IDE_PRJ").ToString()
                            converter.Days = reader("DAYS").ToString()
                            If converter.IsStartNow Then
                                converter.UserLoginExe = reader("USR_LOG_EXE").ToString()
                            End If
                            converter.Hours = reader("HOURS").ToString()
                            converter.IdeLangue = reader("IDE_LANG").ToString()
                            converter.UserLoginPln = reader("USR_LOG_PLN").ToString()
     
                            If converter.InitWith(reader("ARGS").ToString()) Then
                                If converter.IsOkToConvert(dtmCurrentDate) Then
                                    updateDaysStatus(converter)
                                    If Not FifoContains(converter) Then
                                        _fifoConverterRunners.Enqueue(converter)
                                    End If
                                End If
                            End If
                        End If
                        connection.Close()
                        reader.Close()
                        Return converter.ToString()
                    Loop
                End If
                ' connection.Close()
                ' Return converter
                '   Return True
            Catch ex As Exception
                _elgEvent.WriteEntry(ex.Message + " " + ex.StackTrace, EventLogEntryType.Error)
            End Try
    End Function
    J'ai cette erreur qui me saute à la figure:


    Pourquoi veut-il l'analyser en tant que type boolean ? Alors que je retourne un string.
    D'avance merci

Discussions similaires

  1. Quote et double quote
    Par aktos dans le forum Langage
    Réponses: 8
    Dernier message: 05/01/2007, 19h55

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