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

Qt Discussion :

Qt et création base de données SQLITE


Sujet :

Qt

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Technicien
    Inscrit en
    Décembre 2008
    Messages
    53
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien

    Informations forums :
    Inscription : Décembre 2008
    Messages : 53
    Par défaut Qt et création base de données SQLITE
    Bonjour je suis en train d'essayer de créer une base de données SQLite à partir de Qt. Mon problème est le suivant : le code suivant me crée bien un fichier "test.db" mais ce fichier est un fichier vide, la table n'est pas créée.

    Voici le code, est ce que je me suis trompé quelque part?

    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
     
        QString nom_fichier = QDir::homePath();
        nom_fichier += "/test.db";
     
        // Ouvre la fenetre d'enregistrement
        QString fichier = QFileDialog::getSaveFileName(this, "Nouvelle Base de donnes", nom_fichier, "Fichier BDD(*.db)");
        QFile file(fichier);
        if (file.open(QIODevice::WriteOnly))
        {
            QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE");
            db.setDatabaseName(fichier);
            if (!db.open())
            {
                QMessageBox::critical(0, qApp->tr("Cannot open database"),
                    qApp->tr(QString::fromUtf8("Impossible d'ouvrir la base\nde données.\nCliquez sur Cancel pour quitter.")), QMessageBox::Cancel);
                return;
            }
            QSqlQuery query(db);
            query.exec("CREATE TABLE t1 ( id INTEGER PRIMARY KEY AUTOINCREMENT, "
                                                "text              VARCHAR(256)"
                                                "entier               INTEGER)");

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    164
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 164
    Par défaut
    as-tu essayer de faire des INSERT après avoir créé ta table ?

  3. #3
    Membre confirmé
    Homme Profil pro
    Technicien
    Inscrit en
    Décembre 2008
    Messages
    53
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien

    Informations forums :
    Inscription : Décembre 2008
    Messages : 53
    Par défaut
    oui j'ai essayé d'en faire un mais ça n'as pas fonctionner.

  4. #4
    Expert confirmé

    Homme Profil pro
    pdg
    Inscrit en
    Juin 2003
    Messages
    5 756
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : pdg

    Informations forums :
    Inscription : Juin 2003
    Messages : 5 756
    Billets dans le blog
    3
    Par défaut
    Test si query.exec() te renvoie false, et regarde ce que tu dit lastError() si c'est le cas.

  5. #5
    Membre expérimenté
    Avatar de Niak74
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    271
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations forums :
    Inscription : Juin 2007
    Messages : 271
    Par défaut
    J'utilise aussi Qt avec SQLite.

    Tu n'as pas besoin de faire un fichier.open avant d'utiliser ta bdd.

    Si ça peut t'aider, voici ma façon de faire une requête :

    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
    QString fichierbdd = "/home/user/bdd.db"; //Chemin vers la bdd
    QSqlDatabase madatabase = QSqlDatabase::addDatabase("QSQLITE");
    madatabase.setHostName("localhost");
    madatabase.setDatabaseName(fichierbdd);
    madatabase.setUserName("root");
    madatabase.setPassword("");
     
    if(!madatabase.open())
    {
    qDebug() << "Impossible d'ouvrir la base de données !";
    return;
    }
     
    QString queryStr = "Select * from MaTable";
    QSqlQuery query = madatabase.exec(queryStr);
     
    if(query.lastError().isValid())
    {
    qDebug() << "Erreur pendant l'execution de la requete SQL : " << query.lastError().text();
    qDebug() << "La requete était : " << queryStr;
    }
     
    madatabase.close();
     
    QSqlDatabase::removeDatabase("QSQLITE");

  6. #6
    Membre confirmé
    Homme Profil pro
    Technicien
    Inscrit en
    Décembre 2008
    Messages
    53
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien

    Informations forums :
    Inscription : Décembre 2008
    Messages : 53
    Par défaut
    J'ai trouvé l'erreur grâce à la fonction lastError, en fesant ma création de table, j'ai effectué une erreur de frappe : j'avais mis deux fois ' à la place de ". Une erreur bête. Etant donné que j'avais mis une version simple ici, il n'y avait pas le problème sur le code (ma table contient 28 "paramètres", j'en ai mis ici un de chaque types).

    Merci à tous de vôtre aide.

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 01/04/2011, 11h55
  2. SQLite création Base de données
    Par darksteph dans le forum Android
    Réponses: 4
    Dernier message: 28/02/2011, 15h49
  3. Réponses: 2
    Dernier message: 08/06/2006, 20h49
  4. Création base de données Oracle sous Winwows
    Par madina dans le forum Oracle
    Réponses: 2
    Dernier message: 19/05/2006, 09h13
  5. création base de données avec easyphp
    Par Battosaiii dans le forum Débuter
    Réponses: 5
    Dernier message: 29/06/2004, 18h50

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