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

Installation PostgreSQL Discussion :

Accès à PostgreSQL via ODBC et VB.NET


Sujet :

Installation PostgreSQL

  1. #1
    Membre à l'essai
    Inscrit en
    Juillet 2004
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Juillet 2004
    Messages : 17
    Points : 11
    Points
    11
    Par défaut Accès à PostgreSQL via ODBC et VB.NET
    J'essaye d'accéder à une base de données PostGreSQL pour la première fois avec VB.NET 2008 et le driver ODBC psqlodbc de PostgreSQL.

    Je ne veux pas créer un DSN, mais j’utilise plutôt le connectionstring
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Driver={PostgreSQL};Server={MonIP};Port=5432;Database={MaBD};Uid={MonLogin};Pwd={MonPwd}
    Après avoir installé le package de psqlodbc, je suis incapable d'identifier la référence à ajouter à mon programme pour pouvoir accéder à ma base de données via le ODBC. Que dois-je faire?

  2. #2
    Modérateur
    Avatar de sevyc64
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2007
    Messages
    10 192
    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 192
    Points : 28 075
    Points
    28 075
    Par défaut
    Si tu veux acceder par ODBC, ta chaine de connection semble correcte.

    Quant à la référence à utiliser, c'est, dans ce cas, l'assembly standard du framework à savoir System.Data.Odbc
    --- Sevyc64 ---

    Parce que le partage est notre force, la connaissance sera notre victoire

  3. #3
    Membre à l'essai
    Inscrit en
    Juillet 2004
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Juillet 2004
    Messages : 17
    Points : 11
    Points
    11
    Par défaut
    Il est déjà inclus. Voici le message d'erreur que j'obtiens sur le OPEN.

    Je peux me connecter sans problème à d'autres base de données avec le même code, donc il doit me manquer quelque chose pour PostGreSQL.

    J'imagine que je devrai aussi inclure un des DLL du ODBC de PostGreSQL lorsque je vais déployer mon application sur un autre PC?

    Sur le site WEB de PostGreSQL il donne uniquement un example en utilisant un DSN mais je ne dois pas utiliser un DSN pour mes déployments. (http://wiki.postgresql.org/wiki/Usin...erver_via_ODBC).

    System.Data.Odbc.OdbcException
    12:02:10.1 ERROR [IM002] [Microsoft][ODBC Driver Manager] Data source name not found and no default driver specified
    12:02:10.2 at System.Data.Odbc.OdbcConnection.HandleError(OdbcHandle hrHandle, RetCode retcode)
    12:02:10.2 at System.Data.Odbc.OdbcConnectionHandle..ctor(OdbcConnection connection, OdbcConnectionString constr, OdbcEnvironmentHandle environmentHandle)
    12:02:10.2 at System.Data.Odbc.OdbcConnectionOpen..ctor(OdbcConnection outerConnection, OdbcConnectionString connectionOptions)
    12:02:10.2 at System.Data.Odbc.OdbcConnectionFactory.CreateConnection(DbConnectionOptions options, Object poolGroupProviderInfo, DbConnectionPool pool, DbConnection owningObject)
    12:02:10.2 at System.Data.ProviderBase.DbConnectionFactory.CreateNonPooledConnection(DbConnection owningConnection, DbConnectionPoolGroup poolGroup)
    12:02:10.2 at System.Data.ProviderBase.DbConnectionFactory.GetConnection(DbConnection owningConnection)
    12:02:10.2 at System.Data.ProviderBase.DbConnectionClosed.OpenConnection(DbConnection outerConnection, DbConnectionFactory connectionFactory)
    12:02:10.3 at System.Data.Odbc.OdbcConnection.Open()
    12:02:10.3 at RoIpConsole.Odbc.OdbcConfig()
    12:02:10.3 C:\Temp\RoIpConsole\Odbc.vb:line 25

  4. #4
    Modérateur
    Avatar de sevyc64
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2007
    Messages
    10 192
    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 192
    Points : 28 075
    Points
    28 075
    Par défaut
    Est-ce que ton driver odbc marche correctement ?

    Peux-tu justement créer une DSN et l'utiliser par exemple avec Excel ?

    Vérifie aussi que tu n'as pas un problème de parefeu qui bloquerait les ports de Postgre notamment le 5432
    --- Sevyc64 ---

    Parce que le partage est notre force, la connaissance sera notre victoire

  5. #5
    Membre à l'essai
    Inscrit en
    Juillet 2004
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Juillet 2004
    Messages : 17
    Points : 11
    Points
    11
    Par défaut
    Si j'utilise le ConnectionString de MySQL, mon code fonctionne, donc soit que mon ConnectionString est mauvais pour PostGreSQL, soit que le ODBC est introuvable.

    Ce n'est pas un problème de Firewall, la base de données PostGreSQL a été créer sur mon ordi de développement avec port par défaut, aucun Firewall Windows sur ce PC.

    1- J'ai installé la version 9.0.2.1 Win x86-32 de cette page (http://www.enterprisedb.com/products...oad.do#windows)

    2- J'ai crée une base de données locale avec une table et des données que je peux consulter avec pgAdmin III

    3- J'ai installé le package MSI du driver ODBC 9.0 de cette page (http://www.postgresql.org/ftp/odbc/versions/msi/)

    4- Si je regarde dans Administrative Tools - Data Sources - Drivers, je vois PostgreSQL ANSI, PostgreSQL ODBC Driver(ANSI), PostgreSQL ODBC Driver(UNICODE). Sur les onglets User DSN, System DSN, File DSN je ne vois aucun lien vers PostgreSQL.

    5- Dans VB.NET, si je vais dans References, j'ai activé le Namespace System.Data.Odbc, mais je suis incapable de localiser quelque référence que ce soit dans .NET, COM ou autres.

    Avez-vous une idée?

  6. #6
    Modérateur
    Avatar de sevyc64
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2007
    Messages
    10 192
    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 192
    Points : 28 075
    Points
    28 075
    Par défaut
    Ok, tout cela semble correct, à priori.

    Ma question était, pour le point 4, est-ce que tu as essayer de créer une "User DSN" (ou une "System DSN") comme indiqué dans le line que tu donne plus haut, et est-ce que tu as essayer d'utiliser cette DSN créée avec par exemple Excel pour acceder à ta base.
    Cela juste pour vérifier que le driver ODBC fonctionne correctement.

    Pour le paramètre Server, quelle adresse IP donne-tu ? As-tu essayer avec l'adresse 127.0.0.1 ?
    --- Sevyc64 ---

    Parce que le partage est notre force, la connaissance sera notre victoire

  7. #7
    Membre à l'essai
    Inscrit en
    Juillet 2004
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Juillet 2004
    Messages : 17
    Points : 11
    Points
    11
    Par défaut
    Tu as mis le doigt sur le bobo ... en partie.

    J'utilisait le ConnectionString suivant et ça ne fonctionnait pas:
    Driver={PostgreSQL};Server=192.168.1.17;...

    Finalement je devait changer le Driver ET le Server pour que ça marche:
    Driver={PostgreSQL ANSI};Server=127.0.0.1;...

    Si j'essais les drivers "PostgreSQL ODBC(ANSI)" et "PostgreSQL ODBC Driver(UNICODE)", alors ne fonctionne pas, seul le driver "PostgreSQL ANSI" semble OK.

    Maintenant que ça fonctionne, j'ai créé la même base de données sur un autre réseau externe (je dois donc sortir sur internet pour y accéder), avec les même données dans une version MySQL et PostgreSQL.

    Si j'exécute la command "select * from histo order by Row_id Desc, CallFrom limit 2000" dans chaque base de données via ODBC, en modifiant le ConnectionString, j'obtiens les résultats suivants:

    MySQL : 2.52 secondes
    PostGreSQL: 7.201 secondes

    Est-ce que ce sont les performances à laquelle je dois m'attendre sur PostGreSQL (3 x plus lent que MySQL)? Le gros du délai provient de l'exécution de la méthode ExecuteReader.

  8. #8
    Modérateur
    Avatar de sevyc64
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2007
    Messages
    10 192
    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 192
    Points : 28 075
    Points
    28 075
    Par défaut
    Je ne saurais te répondre sur les durées, je ne connais que très très peu autant l'un comme l'autre des SGBD.

    Par contre, il est vrai que certains drivers ODBC, suivant comme ils sont codés sans doute, peuvent se révéler parfois lent.

    Autre point à prendre en compte, tu passe par internet. Rien que ce fait là, peut te donner des temps très variables. Même une même requete sur le même SGBD, répétée plusieurs fois, pourra te donner des temps variables suivant la charge du réseau, et les routes empruntées.
    Tes requêtes font peut-être 2 fois le tour du monde pour te parvenir.
    --- Sevyc64 ---

    Parce que le partage est notre force, la connaissance sera notre victoire

Discussions similaires

  1. Accès à une BD Paradox via ODBC avec VB.NET
    Par gilweb dans le forum Accès aux données
    Réponses: 0
    Dernier message: 15/05/2014, 14h24
  2. Accès à une BD Paradox via ODBC avec VB.NET
    Par Passepoil dans le forum Accès aux données
    Réponses: 2
    Dernier message: 01/12/2011, 20h07
  3. Pb acces MySQL via ODBC
    Par Jean-Matt dans le forum Installation
    Réponses: 1
    Dernier message: 25/09/2007, 11h30
  4. [Kylix] PostgreSql via ODBC
    Par doykati dans le forum EDI
    Réponses: 3
    Dernier message: 08/02/2007, 10h10
  5. Réponses: 3
    Dernier message: 13/07/2006, 10h40

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