2009-10-08 1 views
0

Débutant ayant du mal à créer une base de données ici. Le code suivant est compilé correctement, mais aucune base de données n'est créée et je ne trouve aucun fichier sqlite.Créer une base de données dans QT

#include "makeDB.h" 
#include <iostream> 
#include <QString> 
#include <QtSql> 

void makeDB(QString dbName) { 
    QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE"); 
    db.setHostName("localHost"); 
    db.setDatabaseName(dbName); 
    db.setUserName("logger"); 
    db.setPassword("logger"); 
} 

#include <QtGui/QApplication> 
#include <QString> 
#include <QtSql> 
#include "mainwindow.h" 
#include "makeDB.h" 
#include "createTable.h" 
#include "ui_mainwindow.h" 


int main(int argc, char *argv[]) 
{ 
    QApplication a(argc, argv); 
    MainWindow w; 
    w.show(); 

    makeDB("log1"); 

    createTable(); 

    return a.exec(); 
} 

Qu'est-ce que je fais mal ici? Merci! Waynew Modifier/Supprimer le message

Répondre

3

Nous ne pouvons pas voir ce que vous createTable() le fait, le code que vous avez jamais aux appels db.open() la plupart des bases de données SQL QT et appels retour bool pour le succès et il y a une fonction lastError() pour les deux Les appels QSqlQuery. Vérifiez-les si les appels appropriés, c'est-à-dire db.open() et query.exec() renvoient faux.

par exemple.

bool makeDB(QString dbName) { 
    QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE"); 
    db.setHostName("localHost"); 
    db.setDatabaseName(dbName); 
    bool result = db.open(); 
    if (result) 
    { 
    //do more processing 
    } 
    else 
    { 
    qDebug() << db.lastError().text() 
    } 
    return result; 
} 

Je ne pense pas non plus que SqlLite prend en charge tout type d'authentification this semble indiquer que vous pouvez sécuriser votre base en licenciant une extension des créateurs de SqlLite.

Quant à la création de la table réelle, il devrait y avoir un SQL qui est exécutée qui ressemble à ceci:

CREATE TABLE (x int, y varchar); 

selon les colonnes que vous voulez réellement.

This est la documentation respective.