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

Bases de données Discussion :

L'accès aux données avec Qt [Tutoriel]


Sujet :

Bases de données

  1. #1
    Expert confirmé

    Homme Profil pro
    SDE
    Inscrit en
    août 2007
    Messages
    2 013
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : SDE

    Informations forums :
    Inscription : août 2007
    Messages : 2 013
    Points : 4 566
    Points
    4 566
    Par défaut L'accès aux données avec Qt
    Bonjour,

    Cet article explique comment gérer l'interaction entre votre application et un quelconque système de gestion de base de données au travers du framework Qt. J'aborde plusieurs façons de faire en partant de la moins efficace vers la plus intéressante.

    N'hésitez pas à laisser des commentaires et donner vos conseils.



    http://alain-defrance.developpez.com/articles/Qt/SGBD/
    http://alaindefrance.wordpress.com
    Certifications : SCJP6 - SCWCD5 - SCBCD5 - SCMAD1
    SDE at BitTitan

  2. #2
    Rédacteur
    Avatar de Vincent Rogier
    Profil pro
    Inscrit en
    juillet 2007
    Messages
    2 373
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : juillet 2007
    Messages : 2 373
    Points : 5 306
    Points
    5 306
    Par défaut
    petites remarques convernant le paragraphe "III-A. Les drivers disponibles" :

    * le driver QOCI est dorénavant en open source avec la derniére version de Qt
    * Il existe un driver qt Oracle open source QOpenOCCI, développé par Andrew White qui est basé sur la librairie open source C OCILIB et dont les performances sont de loin très supérieures à QOCI (c'est pas moi qui le dit mais l'équipe qui développe Kevora, un IDE DB open source basé sur Qt).

    Concernant les critiques faite sur ODBC (que je partage aussi), je tiens à préciser, tout de même, que la modélisation C++ de Qt pour encapsuler les accès DB est en elle même peu performante... Ma fois, c'est un autre débat...
    Vincent Rogier.

    Rubrique ORACLE : Accueil - Forum - Tutoriels - FAQ - Livres - Blog

    Vous voulez contribuer à la rubrique Oracle ? Contactez la rubrique !

    OCILIB (C Driver for Oracle)

    Librairie C Open Source multi-plateformes pour accéder et manipuler des bases de données Oracle

  3. #3
    Expert confirmé

    Homme Profil pro
    SDE
    Inscrit en
    août 2007
    Messages
    2 013
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : SDE

    Informations forums :
    Inscription : août 2007
    Messages : 2 013
    Points : 4 566
    Points
    4 566
    Par défaut
    Salut,

    C'est corrigé pour QOCI, et j'ai rajouté une partie sur QOpenOCI.

    http://alaindefrance.wordpress.com
    Certifications : SCJP6 - SCWCD5 - SCBCD5 - SCMAD1
    SDE at BitTitan

  4. #4
    Futur Membre du Club
    Profil pro
    Inscrit en
    septembre 2009
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : septembre 2009
    Messages : 2
    Points : 5
    Points
    5
    Par défaut
    Je suis actuellement en stage et il m'est demandé de faire un logiciel gérant une base de données à partir de QT. Je m'aide de votre tutoriel mais il y a juste un élément que je n'arrive pas à comprendre. Dans la partie VI-B, pour faire la liaison entre le modèle et le tableau vous faites :

    ui->tableAvecModelRubrique->setModel(model);

    La réponse est surement évidente mais je n'arrive pas à comprendre à quoi correspond "tableAvecModelRubrique" ?

    Merci

  5. #5
    Alp
    Alp est déconnecté
    Expert éminent sénior

    Avatar de Alp
    Homme Profil pro
    Inscrit en
    juin 2005
    Messages
    8 575
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : juin 2005
    Messages : 8 575
    Points : 11 633
    Points
    11 633
    Par défaut
    C'est un TableView. On lui adjoint ensuite le bon modèle avec setModel.
    Pour lier à un QTableView il suffit d'appeler la méthode héritée QAbstractItemView::setModel(QAbstractItemModel *). Nous pouvons appeler d'autres méthodes permettant de masquer certaines colonnes, définir un critère de tri, et bien d'autres choses non abordées ici.
    QTableView hérite de QAbstractItemView, et possède donc la fonction membre setModel.

  6. #6
    Futur Membre du Club
    Profil pro
    Inscrit en
    septembre 2009
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : septembre 2009
    Messages : 2
    Points : 5
    Points
    5
    Par défaut
    Merci.
    C'est bien ce que je pensais à la base mais je ne comprend pas le fonctionnement des lignes :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
      ui->tableAvecModelRubrique->setModel(model); 
      ui->tableAvecModelRubrique->setColumnHidden(RUBRIQUE_ID, true); 
      ui->tableAvecModelRubrique->resizeColumnsToContents();
    En déclarant tableAvecModelRubrique comme étant un TableView, j'ai des erreurs de compilations me disant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     error: 'class Ui::Widget' has no member named 'tableAvecModelRubrique'
    Cette erreur me paraît logique, c'est pour cela que je ne comprend pas le fonctionnement des trois lignes de codes.

  7. #7
    Expert confirmé

    Homme Profil pro
    SDE
    Inscrit en
    août 2007
    Messages
    2 013
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : SDE

    Informations forums :
    Inscription : août 2007
    Messages : 2 013
    Points : 4 566
    Points
    4 566
    Par défaut
    Hum cette instance est directement générée par Qt Designer (Qt Creator n'existait pas encore :p).
    En effet si on tente d'appeler une méthode d'une instance qui n'existe pas, ca ne compilera pas :p
    http://alaindefrance.wordpress.com
    Certifications : SCJP6 - SCWCD5 - SCBCD5 - SCMAD1
    SDE at BitTitan

  8. #8
    Alp
    Alp est déconnecté
    Expert éminent sénior

    Avatar de Alp
    Homme Profil pro
    Inscrit en
    juin 2005
    Messages
    8 575
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : juin 2005
    Messages : 8 575
    Points : 11 633
    Points
    11 633
    Par défaut
    Citation Envoyé par Guugu Voir le message
    Merci.
    C'est bien ce que je pensais à la base mais je ne comprend pas le fonctionnement des lignes :

    ui->tableAvecModelRubrique->setModel(model);
    ui->tableAvecModelRubrique->setColumnHidden(RUBRIQUE_ID, true);
    ui->tableAvecModelRubrique->resizeColumnsToContents();

    En déclarant tableAvecModelRubrique comme étant un TableView, j'ai des erreurs de compilations me disant :

    error: 'class Ui::Widget' has no member named 'tableAvecModelRubrique'

    Cette erreur me paraît logique, c'est pour cela que je ne comprend pas le fonctionnement des trois lignes de codes.
    Comme le dit Alain, le "ui" est la classe générée par Qt Designer suite à
    uic -o <nom du fichier de sortie>.h <nom du fichier designer>.ui
    N'hésite pas à consulter la FAQ ou les tutos d'introduction à Qt qu'on a sur http://qt.developpez.com/tutoriels/ pour en savoir plus

Discussions similaires

  1. Acces aux données avec ADO
    Par dv-2008 dans le forum Débuter
    Réponses: 4
    Dernier message: 29/06/2010, 19h06
  2. L'accès aux données avec Qt
    Par Alain Defrance dans le forum Qt
    Réponses: 7
    Dernier message: 18/09/2009, 15h56
  3. vitesse d'accès aux données avec une jointure
    Par Invité dans le forum SQLite
    Réponses: 1
    Dernier message: 01/07/2009, 00h46
  4. Gérer l'accès aux données avec un Bindingsource
    Par soso78 dans le forum Windows Forms
    Réponses: 1
    Dernier message: 22/04/2009, 23h23
  5. [AJAX] Acces aux données avec ajax dans une fonction javascript
    Par Sidi-Bou dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 03/03/2008, 12h04

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