Bonjour,

Depuis hier lorsque j'exécute mon programme je me retrouve face à un message d'erreur Windows disant que mon programme a cessé de fonctionner. L'erreur survient juste après une requête, lorsque j'exécute la méthode createTables() cette dernière exécute une requête (création de la table Plans) puis crash. Je n'ai donc pas accès aux message d'erreur car il se produit au moment de l'exécution.

Si quelqu'un peut m'indiquer d'où viens ce problème ...
Merci d'avance !

Fichier BD.h
Code c++ : 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
#ifndef BD_H_
#define BD_H_
 
#include "sqlite3.h"
#include <stdlib.h>
#include <iostream>
 
class BD {
private:
	sqlite3 *connection;
	char** erreurBD;
	char* sql;
public:
	BD();
	virtual ~BD();
	sqlite3* getConnection();
	int query();
	int createTables();
	int dropTables();
};
 
#endif /* BD_H_ */

Fichier BD.cpp
Code c++ : 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
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
#include "BD.h"
using namespace std;
 
/*
 * Constructeur par defaut
 */
BD::BD(){
	sqlite3_open("fireScan.sqlite", &this->connection); //Permet de créer la connexion à la base de données
}
 
/*
 * Destructeur
 */
BD::~BD(){
	sqlite3_close(connection);
}
 
/*
 * Accesseur à la connexion
 * @return sqlite3* connection : la connexion à la base de données
 */
sqlite3* BD::getConnection(){
	return connection;
}
 
/*
 * Méthode permetant d'exécuter une requête
 * @return int : 0 en cas de réussite, -1 sinon
 */
int BD::query(){
	cout << sql << endl;
	int rc = sqlite3_exec(connection, sql, NULL, NULL, erreurBD);
	if( rc!=SQLITE_OK ){
		cout << "Erreur dans la requête";
		return -1;
	}
	return 0;
}
 
/*
 * Methode permetant de créer la structure de la base de données
 * @return int : 0 en cas de réussite, -1 sinon
 */
int BD::createTables(){
	sql = "CREATE TABLE Plans(idPlan INTEGER PRIMARY KEY, libPlan VARCHAR(40), urlPlan VARCHAR(100))";
	query();
 
	sql = "CREATE TABLE Zones(idZone INTEGER PRIMARY KEY, libZone VARCHAR(40), idPlan INTERGER, FOREIGN KEY(idPlan) REFERENCES Plans(idPlan))";
	query();
 
	return 0;
}
 
/*
 * Méthode permetant de supprimer la structure et les données de la base
 * @return int : 0 en cas de réussite, -1 sinon
 */
int BD::dropTables(){
	sql = "DROP TABLE Plans";
	query();
 
	sql = "DROP TABLE Zones";
	query();
 
	return 0;
}

Fichier main.cpp
Code c++ : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
#include "BD/BD.h"
#include <iostream>
#include <windows.h>
using namespace std;
 
int main(int argc, char* argv[]){
	BD *bd = new BD();
	bd->dropTables();
	bd->createTable();
	delete bd;
}