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 :

Soupçon de bug - create_table sur base perso


Sujet :

QxOrm

  1. #1
    Nouveau Candidat au Club
    Inscrit en
    Janvier 2013
    Messages
    1
    Détails du profil
    Informations forums :
    Inscription : Janvier 2013
    Messages : 1
    Points : 1
    Points
    1
    Par défaut Soupçon de bug - create_table sur base perso
    Bonjour,

    Je teste QxOrm 1.2.6 depuis 2 jours pour vérifier qu'il convient bien à mes besoins.
    Je suis parti de l'exemple qxBlog.
    Je voudrais accéder à plusieurs bases: Par exemple, un singleton sur QSQLITE et une base perso sur QMYQSL.

    Dans mon main, j'écris:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    qx::QxSqlDatabase::getSingleton()->setDriverName("QSQLITE");
    QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL");
    QSqlError daoError = qx::dao::create_table<author>(&db);
    Error de syntax mysql:
    [QxOrm] execute sql query failed : CREATE TABLE author (author_id INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT, name TEXT, birthdate DATE, sex INTEGER)
    Conclusion:
    L'erreur de syntaxe est normale, car la syntaxe MySql est AUTO_INCREMENT.
    C'est bien spécifié dans QString QxSqlGenerator_MySQL::getAutoIncrement() const { return "AUTO_INCREMENT"; }.
    La génération de la requête "create table" s'est fait avec le SqlGenerator du singleton.
    Si je vire, la ligne sur le singleton, c'est pareil car le générateur par défaut écrit AUTOINCREMENT.
    Si je remplace QSQLITE par QMYSQL, ça passe, car le SqlGenerator est maintenant sur le bon driver.
    Pouvez-vous vérifier le problème?

    Lieu possible du conflit:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    QString IxDataMember::getSqlTypeAndParams(int iIndexName /* = -1 */) const
    {
    ...
    
       if (m_bAutoIncrement)
       {
          qx::dao::detail::IxSqlGenerator * pSqlGenerator = QxSqlDatabase::getSingleton()->getSqlGenerator();
          if (! pSqlGenerator) { qAssert(false); sResult += " AUTOINCREMENT"; }
          else { sResult += " " + pSqlGenerator->getAutoIncrement(); }
       }
    
       return sResult;
    }

  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


    La fonction qx::dao::create_table existe uniquement pour créer des prototypes et ne doit pas être utilisée en production (elle doit fonctionner uniquement avec SQLite).
    C'est écrit dans la FAQ ici : http://www.qxorm.com/qxorm_fr/faq.html#faq_230

    Toutes les autres fonctionnalités de QxOrm (SELECT, INSERT, UPDATE, DELETE) fonctionnent pour tous types de bases de données (SQLite, PostgreSQL, MySQL, Oracle, etc...).

    Si tu souhaites créer un schéma et générer les tables pour plusieurs types de BDD, je te conseille d'utiliser QxEntityEditor : cette application permet de définir ton schéma, puis de générer automatiquement un projet C++ adapté pour QxOrm, et de générer également automatiquement le script SQL DDL pour créer tes tables...

    Dis-moi si tu veux plus de précisions...
    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.

Discussions similaires

  1. [AC-2010] Bug sur base ACCDE
    Par fclus dans le forum VBA Access
    Réponses: 3
    Dernier message: 02/04/2014, 12h21
  2. bug IE6 sur menu a base UL > LI > A
    Par boutmos dans le forum Mise en page CSS
    Réponses: 11
    Dernier message: 02/04/2009, 18h48
  3. Base SQL ifrance utilisable sur site perso
    Par BlAzAk dans le forum Langage SQL
    Réponses: 0
    Dernier message: 05/11/2007, 11h27
  4. Migration base access sur page perso
    Par fanfan91 dans le forum Access
    Réponses: 1
    Dernier message: 13/09/2005, 17h44

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