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

PostgreSQL Discussion :

pqxx: problème de compréhension


Sujet :

PostgreSQL

  1. #1
    Membre confirmé
    Homme Profil pro
    technicien en électronique
    Inscrit en
    Octobre 2008
    Messages
    74
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : technicien en électronique
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Octobre 2008
    Messages : 74
    Points : 527
    Points
    527
    Par défaut pqxx: problème de compréhension
    salut,
    je fait un logiciel avec wxwidgets et je dois me connecter à postgresql...
    je me trouve après réflexion plus vers la bibliothèque pqxx vu qu'apparemment l'add-on de wxwidgets databaselayer parait ne pas prendre tout en compte...

    j'ai déjà fais quelques essais avec mysql++ avant. mon problème est assez simple...

    Autant je comprends comment est faites mysql++ (et databaselayer) autant je ne comprends pas la structure de pqxx malgré mes recherches de tutoriels documentations sur pqxx...

    qui peut m'éclairer là dessus? merci de votre aide
    OS: Debian squeeze
    Langage: C++ avec Qt

  2. #2
    Membre confirmé
    Homme Profil pro
    technicien en électronique
    Inscrit en
    Octobre 2008
    Messages
    74
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : technicien en électronique
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Octobre 2008
    Messages : 74
    Points : 527
    Points
    527
    Par défaut
    j'ai trouvé de l'aide sur un autreforum... mais j'ai de nouveau un problème...
    j'ai fais ce code pour voir comment fonctionne la bibliothèque pqxx:

    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
    #include <iostream>
    #include <string>
    #include <pqxx>
     
    using namespace std;
     
    int main()
    {
        cout << "essai 1" << endl;
        string parametre="user=postgres password=mdp";
    	pqxx::connection session_postgres(parametre.c_str());
    	try
    	{
    	pqxx::transaction<pqxx::serializable> instructions(session_postgres,"test1");
    	parametre="CREATE ROLE essai PASSWORD 'essaiok' CREATEDB;";
    	/*pqxx::result resultat=*/instructions.exec(parametre.c_str());
    	instructions.commit();
    	cout<<"connection reussie"<<endl;
     
    	}
    	catch (const exception &e)
    	{
    	cerr<<"Echec connection "<<e.what()<<endl;
    	}
        return 0;
    }
    j'ai une interrogation sur la ligne instructions(session_postgres,"test1");... si j'ai bien compris "test1" donne juste un nom mais à quoi sert-il?

    mon gros soucis c'est que j'ai lancé le programme 2 fois... la première il me met "connection réussie" donc le nouveau role a été créé et la 2ème fois il me met "Echec connection ERREUR: le role "essai" existe déjà...

    juste qu'à là c'est apparemment normal mais le soucis vient sur pqadmin 3 il ne vois pas le nouveau role et pareil en ligne de commande (terminal) que se passe-t-il? (pour info je suis sous ubuntu 9.04)
    OS: Debian squeeze
    Langage: C++ avec Qt

  3. #3
    Membre confirmé
    Homme Profil pro
    technicien en électronique
    Inscrit en
    Octobre 2008
    Messages
    74
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : technicien en électronique
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Octobre 2008
    Messages : 74
    Points : 527
    Points
    527
    Par défaut
    j'ai regardé le fichier .pgpass où doit figurer les noms d'utilisateurs... l'utilisateur "essai" n'y figure pas...
    mon programme est en mode débug
    alors pourquoi mon programme me fais croire que ça fonctionne?
    OS: Debian squeeze
    Langage: C++ avec Qt

  4. #4
    Membre émérite
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    1 874
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Octobre 2008
    Messages : 1 874
    Points : 2 890
    Points
    2 890
    Par défaut
    Le fichier .pgpass est optionnel et c'est à l'utilisateur de le remplir, si besoin est.

    Pour vérifier que le rôle est créé on peut faire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select rolname from pg_roles
    mais si le serveur échoue sur une deuxième tentative en indiquant qu'il existe déjà et bien c'est que...il existe déjà

  5. #5
    Membre confirmé
    Homme Profil pro
    technicien en électronique
    Inscrit en
    Octobre 2008
    Messages
    74
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : technicien en électronique
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Octobre 2008
    Messages : 74
    Points : 527
    Points
    527
    Par défaut
    ok merci ça réponds en grosse partie à mes questions...

    il me reste plus que mon interrogation sur la ligne instructions(session_postgres,"test1");... si j'ai bien compris "test1" donne juste un nom? A quoi sert-il(ou s'il ne sert pas du tout)?
    OS: Debian squeeze
    Langage: C++ avec Qt

  6. #6
    Membre émérite
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    1 874
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Octobre 2008
    Messages : 1 874
    Points : 2 890
    Points
    2 890
    Par défaut
    il me reste plus que mon interrogation sur la ligne instructions(session_postgres,"test1");... si j'ai bien compris "test1" donne juste un nom? A quoi sert-il(ou s'il ne sert pas du tout)?
    En soi, mettre un nom ou pas ne change rien. Le fait est qu'en général dans pqxx les instances de classe peuvent avoir des noms. Ensuite on peut y accéder avec des méthodes comme name() ou description(). On peut imaginer que dans certaines circonstances on ait besoin d'afficher ce nom, pour du debug par exemple ou pour s'y retrouver dans une liste d'instances.

  7. #7
    Membre confirmé
    Homme Profil pro
    technicien en électronique
    Inscrit en
    Octobre 2008
    Messages
    74
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : technicien en électronique
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Octobre 2008
    Messages : 74
    Points : 527
    Points
    527
    Par défaut
    ok merci
    maintenant je suis sûr que ce nom n'est pas stocké dans la base mais peut me servir dans mon programme en cas de besoin
    OS: Debian squeeze
    Langage: C++ avec Qt

  8. #8
    Membre confirmé
    Homme Profil pro
    technicien en électronique
    Inscrit en
    Octobre 2008
    Messages
    74
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : technicien en électronique
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Octobre 2008
    Messages : 74
    Points : 527
    Points
    527
    Par défaut
    je réouvre le sujet car j'ai un autre problème...
    j'ai modifié mon programme
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    pqxx::transaction<pqxx::serializable> instructions(session_postgres,"test1");
    parametre="CREATE DATABASE essai OWNER essai;";
    le problème c'est qu'il me met "CREATE DATABASE ne peut pas être exécuté dans un bloc de transaction"

    j'ai essayé de trouver en fouillant dans les fichiers de la bibliothèque mais j'ai rien trouvé de vraiment concluant... Que faire?
    OS: Debian squeeze
    Langage: C++ avec Qt

  9. #9
    Membre émérite
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    1 874
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Octobre 2008
    Messages : 1 874
    Points : 2 890
    Points
    2 890
    Par défaut
    Pas certain effectivement qu'on puisse exécuter des instructions SQL avec libpqxx en dehors d'un bloc de transaction, au vu de comment c'est conçu.
    Au pire tu peux utiliser libpq à la place, pour cette partie-là spécifiquement. libpq est utilisable en C mais aussi en C++

  10. #10
    Membre confirmé
    Homme Profil pro
    technicien en électronique
    Inscrit en
    Octobre 2008
    Messages
    74
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : technicien en électronique
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Octobre 2008
    Messages : 74
    Points : 527
    Points
    527
    Par défaut
    ok merci je vais regarder ça quand j'aurais le temps
    je laisse ce post ouvert au cas où
    OS: Debian squeeze
    Langage: C++ avec Qt

Discussions similaires

  1. [Débutant] problème de compréhension
    Par Sylvester dans le forum Général Java
    Réponses: 18
    Dernier message: 21/07/2005, 09h16
  2. Réponses: 5
    Dernier message: 11/04/2005, 10h21
  3. [C#] Problème de compréhension de System.Convert ET Provider
    Par papouAlain dans le forum Windows Forms
    Réponses: 5
    Dernier message: 18/11/2004, 21h52
  4. onclipevent (problème de compréhension)
    Par stephane eyskens dans le forum Flash
    Réponses: 8
    Dernier message: 24/09/2003, 15h09
  5. Problème de compréhension des ensembles
    Par Cornell dans le forum Langage
    Réponses: 6
    Dernier message: 07/02/2003, 22h07

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