Russian Qt Forum

Qt => Базы данных => Тема начата: mokynis от Август 11, 2015, 15:52



Название: mysql в консоли
Отправлено: mokynis от Август 11, 2015, 15:52
делаю консольный проект
Код:
QT       += sql
QT       -= gui
TARGET = proekt
CONFIG   += console
CONFIG   -= app_bundle
TEMPLATE = app
SOURCES += main.cpp
вот кусок кода
Код:
#include <QtCore/QCoreApplication>
#include <QtSql>

int main(int argc, char *argv[])
{
    QCoreApplication a(argc, argv);

    QSqlQuery qry;
    bool is_good=true;
    QSqlDatabase db=QSqlDatabase::addDatabase("QMYSQL3");
    db.setHostName("<ip-адрес>");
    db.setDatabaseName("<база>");
    db.setUserName("<юзер>");
    db.setPassword("<pass>");

    if(!db.open())
        is_good=false; //ТУТ ОШИБКУ НЕ ПОКАЗЫВАЕТ
    if(is_good)
        is_good=qry.exec("DELETE FROM invoice_in");//А ВОТ ТУТ =false
если делаю то же самое, только с GUI, все нормально соединяется и работает
Где мой косяк?


Название: Re: mysql в консоли
Отправлено: Пантер от Август 11, 2015, 16:06
Надо сначала запустить очередь сообщений (a.exec()), видимо.


Название: Re: mysql в консоли
Отправлено: mokynis от Август 11, 2015, 16:10
неее, тогда вообще дичь получается. Типа, запускается невесть что и висит, ждет моей реакции


Название: Re: mysql в консоли
Отправлено: Пантер от Август 11, 2015, 16:12
Дык, надо функционал вынести в класс от QObject отнаследованный и запускать выполнение через invokeMethod.


Название: Re: mysql в консоли
Отправлено: Пантер от Август 11, 2015, 16:15
Код
C++ (Qt)
class SomeName : public QObject
{
Q_OBJECT
............
public Q_SLOTS:
   void run() {
       //Connect to database and work
   }
............
};
.....................
int main(......)
{
   QCoreApplication app(.....);
   SomeName someName;
   QMethaObject::invokeMethod(&someName, "run");
   return app.exec();
}