Каждый раз, когда я объявляю QSqlDatabse
соединение в файле заголовка моего класса DatabaseManager, мое приложение вылетает с сообщением: программа неожиданно закончила?!QSqlDatabse: программа неожиданно закончила?
Если я помещаю декларацию в исходный файл, мое приложение работает нормально.
- Почему это происходит и
- , как это исправить?
Edit:
здесь заголовочный файл:
#ifndef DATABASEMANAGER_H
#define DATABASEMANAGER_H
#include <QObject>
#include <QSqlDatabase>
#include <QSqlError>
#include <QSqlQuery>
class DatabaseManager : public QObject
{
Q_OBJECT
public:
explicit DatabaseManager(QObject *parent = 0);
public:
QString open_db();
QString create_db_tables();
QSqlDatabase get_db();
QSqlDatabase database;
};
#endif // DATABASEMANAGER_H
здесь исходный файл:
#include "databasemanager.h"
#include <QDir>
#include <QCoreApplication>
#include <QDebug>
QString DatabaseManager::open_db()
{
QSqlDatabase db;
db = database;
QString path = "/Users/abubakr/Documents/workspace/Muasaa/";
db = QSqlDatabase::addDatabase("QSQLITE");
db.setDatabaseName(path+"Database v.1");
if (db.open()){
return "Database is created and open, Application is ready ...";
} else {
return db.lastError().text();
}
}
QSqlDatabase DatabaseManager::get_db(){
}
QString DatabaseManager::create_db_tables(){
QSqlQuery query;
//****************************************
//create personal_info table
//****************************************
query.prepare("CREATE TABLE IF NOT EXISTS personal_Info"
"(ref_no NTEGER UNIQUE PRIMARY KEY,"
"name VARCHAR(30), father VARCHAR(30), grandfather VARCHAR(30), mother VARCHAR(30), tel VARCHAR(30),"
"email VARCHAR(30), post_code VARCHAR(30), address VARCHAR(30))");
if (!query.exec()) return query.lastError().text();
//****************************************
//create familly_info table
//****************************************
query.prepare("CREATE TABLE IF NOT EXISTS familly_Info"
"(ref_no NTEGER UNIQUE PRIMARY KEY,"
"spouse VARCHAR(30), father_in_law VARCHAR(30), mother_in_law VARCHAR(30), childern VARCHAR(30))");
if (!query.exec()) return query.lastError().text();
//****************************************
//create payment_info table
//****************************************
query.prepare("CREATE TABLE IF NOT EXISTS payment_Info"
"(ref_no NTEGER UNIQUE PRIMARY KEY,"
"payment VARCHAR(30), payment_method VARCHAR(30))");
if (!query.exec()) return query.lastError().text();
return "Tables created successfully ";
}
Маленький код будет лучше здесь! – ramtheconqueror
Отладка не показывает мне ничего .. @ drescherjm –
Это на окнах? Если вы используете Qt, который был создан для вашей версии компилятора. Вы не можете использовать Qt, который был создан для любой другой версии. – drescherjm