alien1983 Temat założony przez niniejszego użytkownika |
[qt] Tworzenie nowego obiektu dostępnego w każdej metodzie klasy » 2016-04-13 04:50:58 #include "dbcore.h" #include <QSql> #include <QSqlDatabase> #include <QSqlDriver> #include <QSqlQuery> #include <QString>
dbCore::dbCore( QObject * parent ) : QObject( parent ) { }
bool dbCore::createConnection( QString dbType, QString dbHostName, QString dbName, QString dbUserName, QString dbPassword ) { QSqlDatabase db = QSqlDatabase::addDatabase( dbType ); db.setHostName( dbHostName ); db.setDatabaseName( dbName ); db.setUserName( dbUserName ); db.setPassword( dbPassword ); if( !db.open() ) { qDebug() << "[dbCore::createConnection] Database error occurred."; return false; } qDebug() << "[dbCore::createConnection] Database connected."; return true; }
void dbCore::test() { qDebug() << db.??? <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< }
Wiatm, jak napisać zmienić tą klasę tak aby utworzony obiekt (QSqlDatabase db) w klasie (dbcore) był dostępny w całej klasie (dbcore), a nie tylko w metodzie: (dbCore::createConnection). Klasa dbCore ma pełnić funkcję komunikacyjną z sql server za pomocą klas : <QSql> <QSqlDatabase> <QSqlDriver> <QSqlQuery> |
|
mateczek |
» 2016-04-13 05:18:08 QSqlDatabase db //przenieść do "dbcore.h" zrobić składnik klasy, a nie zmienną lokalną funkcji. |
|
alien1983 Temat założony przez niniejszego użytkownika |
» 2016-04-13 18:01:11 Nie mogę tego przenieść bo wysypuje program, /kompilator nie zgłasza błędów #include "dbcore.h" QSqlDatabase db; <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< dbCore::dbCore( QObject * parent ) : QObject( parent ) { qDebug() << "000"; }
bool dbCore::createConnection( QString dbType, QString dbHostName, QString dbName, QString dbUserName, QString dbPassword ) { db = QSqlDatabase::addDatabase( dbType ); db.setHostName( dbHostName ); db.setDatabaseName( dbName ); db.setUserName( dbUserName ); db.setPassword( dbPassword ); if( !db.open() ) { qDebug() << "[dbCore::createConnection] Database error occurred."; return false; } qDebug() << "[dbCore::createConnection] Database connected."; return true; }
QSqlDatabase db; w dbcore.cpp działa, natomiast ta deklaracja w dbcore.h nie działa, dlaczego? |
|
pekfos |
» 2016-04-13 19:22:00 natomiast ta deklaracja w dbcore.h nie działa, dlaczego? |
A gdzie ją wstawiłeś? |
|
alien1983 Temat założony przez niniejszego użytkownika |
» 2016-04-13 19:42:56 #ifndef DBCORE_H #define DBCORE_H #include <iostream> #include <QtCore/QDebug> #include <QObject> #include <QSql> #include <QSqlDatabase> #include <QSqlDriver> #include <QSqlQuery> #include <QString>
class dbCore : public QObject { Q_OBJECT public: dbCore( QObject * parent ); QSqlDatabase db; <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< void test(); bool createConnection( QString dbType, QString dbHostName, QString dbName, QString dbUserName, QString dbPassword ); };
#endif
|
|
pekfos |
» 2016-04-13 19:45:28 A co znaczy, że nie działa? |
|
alien1983 Temat założony przez niniejszego użytkownika |
» 2016-04-13 20:19:37 Podpis problemu: Nazwa zdarzenia problemu: APPCRASH Nazwa aplikacji: app.exe Wersja aplikacji: 0.0.0.0 Sygnatura czasowa aplikacji: 00000000 Nazwa modułu z błędem: Qt5Sql.dll Wersja modułu z błędem: 5.5.1.0 Sygnatura czasowa modułu z błędem: 00000000 Kod wyjątku: c0000005 Przesunięcie wyjątku: 0000595a Wersja systemu operacyjnego: 6.3.9600.2.0.0.768.101 Identyfikator ustawień regionalnych: 1045 Dodatkowe informacje 1: 5861 Dodatkowe informacje 2: 5861822e1919d7c014bbb064c64908b2 Dodatkowe informacje 3: 1318 Dodatkowe informacje 4: 13181ae637ac2592fac0ca2dd662cdcc
uruchamiam na release standardowo,
na debug mam takie błędy:
C:\..\pgcore.cpp:-1: In member function 'void pgcore::test()': C:\..\pgcore.cpp:9: błąd: no matching function for call to 'dbCore::dbCore()' dbCore db; ^ C:\..\pgcore.cpp:2: In file included from ..\..\pgcore.cpp:2:0: C:\..\dbcore.h:17: dbCore::dbCore(QObject*) dbCore(QObject *parent); ^ C:\..\dbcore.h:12: dbCore::dbCore(const dbCore&) class dbCore : public QObject ^ C:\..\dbcore.h:12: note: candidate expects 1 argument, 0 provided |
|
mateczek |
» 2016-04-13 20:25:22 #include "dbcore.h" QSqlDatabase db; dbCore::dbCore( QObject * parent ) : QObject( parent ) { qDebug() << "000"; } |
|
« 1 » 2 |