类标题中的QSqlDatabase和QSqlQuery

问题描述

| 我想在我的QT项目中创建一个类,以处理sql连接以及所有必要的查询sql事务。 我发现没有这个错误\“ QsqlQuery :: exec:数据库未打开\”我只需要在初始化并打开QsqlDatabase之后初始化QsqlQuery。 问题是我不知道该怎么做... 有我的代码
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\";
    }
提前致谢, 路易斯·达·科斯塔     

解决方法

        我想我知道了。 从QT Doc:   警告:您必须加载SQL驱动程序   并在连接之前打开连接   QSqlQuery已创建。另外,   连接必须保持打开状态   查询存在;否则,行为   QSqlQuery的值未定义。 因此,在打开数据库后创建Query对象(即在方法中声明它)