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

C# Discussion :

Connexion/Déconnexion à une base Postgresql


Sujet :

C#

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 5
    Points : 3
    Points
    3
    Par défaut Connexion/Déconnexion à une base Postgresql
    Bonjour

    Lorsque je tente de fermer la connexion à la base Postgresql, elle ne se ferme pas. En effet, netstat m'indique que le lien TCP est toujours "ESTABLISHED", et ce jusqu'à la fermeture de l'application.

    Est-ce qu'il y a une explication ou j'ai mal fait quelque chose ?
    Bon c'est pas gênant mais c'est plus par curiosité.

    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
     
    public partial class MainWindow : Window
        {
            public MainWindow()
            {
                InitializeComponent();
     
                textBox_host.Text = "192.168.0.16";
                textBox_port.Text = "5432";
                textBox_login.Text = "postgres";
                textBox_password.Text = "postgres";
                textBox_database.Text = "";
            }
     
            NpgsqlConnection conn;
     
            public void OpenConnection()
            {
                try
                {
                    // Définition des paramètres de connexion
                    string parametres_connexion = string.Format("Server={0}; Port={1}; User Id={2}; Password={3}; Database={4};",
                                                                textBox_host.Text, textBox_port.Text, textBox_login.Text, textBox_password.Text, textBox_database.Text);
     
     
                    conn = new NpgsqlConnection(parametres_connexion);
                    conn.Open();
                }
                catch (Exception msg)
                {
                    MessageBox.Show("Problème lors de l'ouverture de la connection :\n " + msg.ToString(), "Oups, problème :/");
                }
            }
     
     
     
            public void button_connection_Click(object sender, RoutedEventArgs e)
            {
                OpenConnection();
                MessageBox.Show("connexion ouverte");
            }
     
            public void button_deconn_Click(object sender, RoutedEventArgs e)
            {
                conn.Close();
                MessageBox.Show("connexion fermée");
            }
     
        }
    Merci

  2. #2
    Invité
    Invité(e)
    Par défaut
    Quelle erreur est affichée lors de l'exécution ?

    P.S. : il est recommandée qu'une fois qu'on ouvre une connexion à une base de données, l'utiliser pour faire ce qu'on a faire et la fermer aussitôt.

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 5
    Points : 3
    Points
    3
    Par défaut
    Il n'y a pas d'erreur.
    C'est juste que j'ouvre la connexion via OpenConnection(), je vois ensuite à l'aide de netstat que le port 5432 est ouvert sur mon serveur Postgresql.
    Mais quand j’exécute conn.Close(), le port reste ouvert et la connexion établie.

    C'est pas problématique du tout, c'est juste que je me demande si j'ai pas mal fait un truc.

    P.S. : il est recommandée qu'une fois qu'on ouvre une connexion à une base de données, l'utiliser pour faire ce qu'on a faire et la fermer aussitôt.
    Bah ouais, mais elle ne se ferme pas en fait. Il y a toujours le lien TCP qui est établi.

    A moins que le but de conn.Close() est seulement de fermer l'accès à la BDD et que cela n'a rien à voir avec le lien TCP.

    Je sais pas si je suis clair en fait

  4. #4
    Modérateur
    Avatar de sevyc64
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2007
    Messages
    10 223
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 223
    Points : 28 213
    Points
    28 213
    Par défaut
    Il est probable effectivement que le lien ne soit pas immédiatement fermé, malgré que la connexion soit réellement fermée.
    Peut-être une question d'optimisation ? En effet si la connexion est réouverte assez rapidement, elle va réutiliser le même lien plutôt que d'en créer un autre.

    Autre piste, dans ton code, certes tu ferme la connexion, mais ton objet conn est toujours instancié d'où le maintient du lien. Si tu fais un Dispose de ton objet conn, le lien est-il maintenu ?

  5. #5
    Candidat au Club
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 5
    Points : 3
    Points
    3
    Par défaut
    Oui en effet, la connexion n'est pas fermée en vue d'une réutilisation dixit la doc.
    Mais en pratique si je fais un conn.Open() suite à un conn.close(), un autre port sera ouvert

    Mais en lisant mieux la documentation, il y a une méthode ClearPool() ou ClearAllPools() qui effectivement ferme immédiatement le lien TCP.

    Merci pour vos réponses

    a+

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

Discussions similaires

  1. problème de connexion à une base postgresql
    Par QAYS dans le forum PostgreSQL
    Réponses: 1
    Dernier message: 16/10/2008, 11h26
  2. Connexion à une base PostgreSQL
    Par dily0403 dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 23/01/2008, 18h43
  3. [PDO] Pb de connexion à une base postgresql
    Par jeromesteffe dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 31/10/2007, 15h30
  4. connexion à une base postgresql distante
    Par chiheb dans le forum PostgreSQL
    Réponses: 2
    Dernier message: 11/10/2006, 09h56
  5. [ postgresql - php ] problèmes de connexion a une base
    Par diableblanc dans le forum PostgreSQL
    Réponses: 2
    Dernier message: 12/07/2005, 19h27

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