QSqlDatabase и QSqlQuery в классе (заголовок)

#mysql #database #qt #class

#mysql #База данных #qt #класс

Вопрос:

Я хочу создать класс в моем QT projecto, для обработки SQL-соединения и всех необходимых запросов и sql-транзакций.

Я обнаружил, что для отсутствия этой ошибки «QSqlQuery:: exec: База данных не открыта» мне пришлось инициализировать QSqlQuery только ПОСЛЕ инициализации и открытия QSqlDatabase.

Проблема в том, что я не знаю, как это сделать…

Вот мой код :

 private:
   QSqlDatabase MyDBConnection;

   // Efectua a ligação à DB
  bool MySqlCon()
  {
      MyDBConnection = QSqlDatabase::addDatabase("QMYSQL");
      if (!MyDBConnection.isValid())
          qDebug() << "ERRO DRIVER MYSQL";

      MyDBConnection.setHostName("localhost");
      MyDBConnection.setUserName("username");
      MyDBConnection.setPassword("password");

      if (MyDBConnection.open())
      {
          MySqlQuery = QSqlQuery(MyDBConnection);
          return true;
      }
      else
      {
          qDebug() << MyDBConnection.lastError();
          qDebug() << "Não Ligado Com Sucesso";
          return false;
      }
   }

public:
    QSqlQuery MySqlQuery;

    // Lê valores na DB
    void DBReader(QString Query)
    {
        if(MySqlCon())
            MySqlQuery.exec(Query);
        else
            qDebug() << "ERRO";
    }
  

Заранее спасибо,
Luis Da Costa

Комментарии:

1. Пожалуйста, не редактируйте названия вопросов, чтобы указать [решено]. Вы можете принять предоставленный ответ или добавить свой собственный ответ, объясняющий решение, и согласиться с этим.

Ответ №1:

Думаю, я вас понял. Из QT Doc :

Предупреждение: Вы должны загрузить драйвер SQL и открыть соединение перед созданием QSqlQuery. Кроме того, соединение должно оставаться открытым, пока существует запрос; в противном случае поведение QSqlQuery не определено.

Итак, создайте объект запроса после того, как вы открыли базу данных (т.е. объявите его в методе)

Комментарии:

1. Извините, это была моя ошибка XD .. мой запрос был неправильным: S … Если только я могу использовать исключения в Qt, как в C # или Java … это мне очень поможет !… Спасибо ^^