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 :

SQLite : erreur "database not open"


Sujet :

Bases de données

  1. #1
    Nouveau membre du Club
    Inscrit en
    Mars 2009
    Messages
    30
    Détails du profil
    Informations forums :
    Inscription : Mars 2009
    Messages : 30
    Points : 25
    Points
    25
    Par défaut SQLite : erreur "database not open"
    salut
    j'essaye de créer une BD SQLite et exécuter des requetes avec l'API Qt, j'ai ecrit le code suivant:
    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
    26
    27
    28
    29
    if(!ifstream("users.db")){
    	QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE","userconnection");
    	db.setDatabaseName("users.db");
    	if(!db.open()){
    		//QMessageBox::information( 0, "Unable to open database", configdb.lastError().databaseText());
    		} else
    		{
    			QSqlQuery query;
    			query.exec("create table user(login char(10), pwd char(10), groupe char(20));");
    			query.exec("insert into user values ('admin', 'admin', 'administrator');");
    			db.close();
    			}
    	QSqlDatabase::removeDatabase("userconnection");
    	}
    	if(!ifstream("config.db")){
    		QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE","configconnection");
    		db.setDatabaseName("config.db");
    		if(!db.open()){
    			//QMessageBox::information( 0, "Unable to open database", configdb.lastError().databaseText());
    			} else
    			{
    				QSqlQuery query;
    				query.exec("create table nodes (nodename varchar(20) primary key,IPadr varchar(20))");
    				query.exec("insert into nodes values ('node1', '192.168.1.1');");
    				query.exec("create table modules (ID int primary key, modulename varchar(20) ,node varchar(20),type varchar(20))");
    				db.close();
    				}
    		QSqlDatabase::removeDatabase("configconnection");
    		}
    et lors de l'execution j'ai :
    QSqlQuery::exec: database not open
    QSqlQuery::exec: database not open
    QSqlDatabasePrivate::removeDatabase: connection 'userconnection' is still in use, all queries will cease to work.
    QSqlQuery::exec: database not open
    QSqlQuery::exec: database not open
    QSqlQuery::exec: database not open
    QSqlDatabasePrivate::removeDatabase: connection 'configconnection' is still in use, all queries will cease to work.
    ???

  2. #2
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    92
    Détails du profil
    Informations personnelles :
    Âge : 50
    Localisation : France, Côte d'Or (Bourgogne)

    Informations forums :
    Inscription : Mai 2005
    Messages : 92
    Points : 108
    Points
    108
    Par défaut
    Tu construis tes QSqlQuery sans arguments dans le constructeur, donc Qt prend une connexion par défaut qui ne doit pas être une des tiennes... Essaie avec un truc du genre:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    QSqlQuery query(db);
    query.exec("...");

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Mars 2008
    Messages : 13
    Points : 11
    Points
    11
    Par défaut
    voila un exemple qui marche bien :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE");
        db.setHostName("localhost");
        db.setDatabaseName("test.db");
        db.setUserName("root");
        db.setPassword("");
        if (!db.open())
        {}
        else
    {
    QSqlQuery req;
    	req.prepare("SELECT * FROM users");
    	req.exec();
    }

Discussions similaires

  1. Erreur : "QIODevice device not open"
    Par Avatar36 dans le forum Qt
    Réponses: 10
    Dernier message: 10/07/2015, 23h14
  2. [CR 8] Erreur Physical Database Not Found
    Par Koukouknizou dans le forum SAP Crystal Reports
    Réponses: 5
    Dernier message: 31/10/2009, 08h28
  3. database not open
    Par mehdi_swatch dans le forum Administration
    Réponses: 12
    Dernier message: 14/06/2007, 17h25

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