Forum Programmation.autre programmation Qt

Posté par  .
Étiquettes : aucune
-3
14
déc.
2010


Bonjour
Debian Lenny Qt 4.4.3
Pas de probleme a la compilation
A l'execution->erreur de segmentation
la base de donnees est ouverte mais la requete create table retourne une erreur
/*
exemple.h
*/

#ifndef EXEMPLE_H
#define EXEMPLE_H
#include QMainWindow>

class Exemple : public QMainWindow
{
Q_OBJECT
public:
//constructeur
Exemple();
private:
void initDb();
};
#endif


/*
exemple.cpp
*/

#include QtCore>
#include QtGui>
#include QtSql>
#include <QApplication>
#include QtDebug>
#include "exemple.h"

Exemple::Exemple()
{
initDb();
}

void Exemple::initDb()
{
qDebug()<<"version QT "<<QT_VERSION_STR;
QString requete;
QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL");
QSqlQuery query(db);
db.setHostName("localhost");
db.setDatabaseName("Depenses");
db.setUserName("myUser");
db.setPassword("myPwd");
if(db.open())
{
qDebug()<<"Succes Ouverture database Depenses" ;
}
requete = "CREATE TABLE maTable \
( \
pkey smallint(5) UNSIGNED DEFAULT 0 NOT NULL, \
);";
query.exec(requete);
if (query.isActive())
{
qDebug()<<"OK";
}
else
{
qDebug()<<"Erreur";
QMessageBox::critical(0, "Database Error", QSqlDatabase::database().lastError().text());
exit(-1);
}
}

int main(int argc, char *argv[])
{
QApplication app(argc, argv);
Exemple *exemple = new Exemple;
exemple->show();
return app.exec();
}

  • # OK

    Posté par  . Évalué à 10.

    C'est noté.
    Merci.

    Si vous n'aimez pas ce commentaire c'est qu'il est ironique.

  • # La requête

    Posté par  . Évalué à 6.

    Elle n'est pas bonne, il y a une virgule après le NULL.
  • # RTFM

    Posté par  . Évalué à 3.

    Je ne suis pas sûr que tu aies le droit d'affecter le contenu à ta variable requete de type QString de cette manière en dehors de son initialisation.

    requete.append("CREATE TABLE maTable (pkey smallint(5) UNSIGNED DEFAULT 0 NOT NULL);");


    Le reste est sur : http://doc.qt.nokia.com/stable/qstring.html

    Si vous n'aimez pas ce commentaire c'est qu'il est ironique.

  • # Héritage et constructeur

    Posté par  (site web personnel) . Évalué à 1.

    N'est-ce pas simplement le problème du constructeur Exemple qui ne fait pas les
    initialisations de QMainWindow ?

    Exemple::Exemple():QMainWindow(0,0)
    {
    ...
    }

    Si la compilation est en mode debug où plante le programme en analysant le core ?

    A+, crabs

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.