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

QxOrm Discussion :

Problème pour faire fonctionner l'exemple de base avec PostgreSQL sur Ubuntu 10.04


Sujet :

QxOrm

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Janvier 2012
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2012
    Messages : 5
    Points : 5
    Points
    5
    Par défaut Problème pour faire fonctionner l'exemple de base avec PostgreSQL sur Ubuntu 10.04
    Bonjour,

    J'essaie de faire fonctionner l'exemple avec la table 'drug'. Je parviens à compiler un executable qui ne doit pas être correct car il ne fonctionne pas.

    J'ai simplement modifié l'exemple pour qu'il utilise une base postgreSQL.

    Voici le code que j'ai modifié dans main.cpp:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
       // Init parameters to communicate with a database
       qx::QxSqlDatabase::getSingleton()->setDriverName("QPSQL");
       qx::QxSqlDatabase::getSingleton()->setDatabaseName("ctAr");
       qx::QxSqlDatabase::getSingleton()->setHostName("localhost");
       qx::QxSqlDatabase::getSingleton()->setUserName("postgres");
       qx::QxSqlDatabase::getSingleton()->setPassword("postgres");
       qx::QxSqlDatabase::getSingleton()->setPort(5432);
    Et voici ce que je recoit comme erreurs a l'execution:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    ubuntu@ubuntu-desktop:~/dev/testQxOrm/src$ g++ *.cpp -I ../include -I /home/ubuntu/dev/tools/QxOrm/include -I /usr/share/qt4/include -L/home/ubuntu/dev/tools/QxOrm/lib/ -lQxOrm
    ubuntu@ubuntu-desktop:~/dev/testQxOrm/src$ locate libQxOrm
    /home/ubuntu/dev/tools/QxOrm/lib/libQxOrm.so
    /home/ubuntu/dev/tools/QxOrm/lib/libQxOrm.so.1
    /home/ubuntu/dev/tools/QxOrm/lib/libQxOrm.so.1.2
    /home/ubuntu/dev/tools/QxOrm/lib/libQxOrm.so.1.2.1
    ubuntu@ubuntu-desktop:~/dev/testQxOrm/src$ ./a.out
    [QxOrm] qx::QxSqlDatabase : create new database connection in thread '-1215686352' with key '{477a3b29-d291-4bd4-b121-66448a120a84}'
    [QxOrm] execute sql query failed : CREATE TABLE drug (id INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT, name TEXT, desc TEXT)
    QPSQL: Unable to create query
    ERROR:  syntax error at or near "AUTOINCREMENT"
    LINE 1: ...REATE TABLE drug (id INTEGER NOT NULL PRIMARY KEY AUTOINCREM...
    Cela veut dire que QxOrm genere du code SQL non compatible avec postgresql. J' ai builde la lib dans qt, en suivant l' explication a cette page:
    http://developer.qt.nokia.com/doc/qt...ver.html#qpsql
    Apres avoir compile boost et QxOrm.

    Auriez-vous une idee sur ce comportement ?

    Merci beaucoup,

    Ludovic

  2. #2
    Expert confirmé

    Profil pro
    Inscrit en
    Avril 2010
    Messages
    481
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 481
    Points : 4 238
    Points
    4 238
    Par défaut


    Cela veut dire que QxOrm genere du code SQL non compatible avec postgresql.
    La fonction qx::dao::create_table<> ne fonctionnera pas avec PostgreSQL : elle est utilisée uniquement pour créer des prototypes avec une base SQLite.
    Pour générer un schéma SQL pour PostgreSQL à partir des classes persistantes C++, voici un lien vers la FAQ pour t'aider :
    http://www.qxorm.com/qxorm_fr/faq.html#faq_230

    Remarque : toutes les autres fonctions d'accès à ta BDD fonctionneront correctement : SELECT, UPDATE, INSERT, DELETE, etc.
    Le problème se situe uniquement pour la création des tables, processus qui est trop spécifique d'une BDD à l'autre => c'est pourquoi je recommande de designer sa BDD (création des tables + index) avec un outil spécifique à chaque SGBD (dans ton cas, ce serait pgAdmin par exemple).

    Si tu veux tester la bibliothèque, je te conseille de regarder les exemples du dossier ./test/ du package QxOrm...

    EDIT : pour infos, il existe un site en espagnol avec pas mal d'exemples pour expliquer l'utilisation de la bibliothèque QxOrm avec une base de données PostgreSQL : http://sites.google.com/site/qxormpostgres/
    Le site de la bibliothèque QxOrm : bibliothèque C++ de gestion de données (Mapping Objet Relationnel ou ORM) basée sur les frameworks Qt et boost.
    QxEntityEditor : éditeur graphique pour la bibliothèque QxOrm (application multi-plateforme pour gérer graphiquement le modèle d'entités).

    Tutoriel : installer un environnement de développement avec QxOrm sous Windows.
    Tutoriel qxBlog : gestion de blogs en C++/Qt.
    Tutoriel qxClientServer : création d'un serveur d'applications en C++/Qt.

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Janvier 2012
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2012
    Messages : 5
    Points : 5
    Points
    5
    Par défaut
    Merci pour ta réponse détaillée

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

Discussions similaires

  1. Problème pour faire fonctionner Ruby
    Par JodMTL dans le forum Ruby
    Réponses: 8
    Dernier message: 16/01/2015, 09h17
  2. Problème pour faire fonctionner un EJB3
    Par Payton3IL dans le forum Java EE
    Réponses: 0
    Dernier message: 16/02/2012, 19h30
  3. Réponses: 3
    Dernier message: 21/11/2011, 10h54
  4. Réponses: 6
    Dernier message: 07/05/2010, 10h48
  5. Problème pour faire fonctionner OpenVpn.
    Par pcsystemd dans le forum Administration système
    Réponses: 1
    Dernier message: 29/08/2007, 00h27

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