QSqlDatabase和QSqlQuery中的一个类(标题)

时间:2011-05-31 11:06:48

标签: mysql database qt class

我想在我的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";
    }

提前致谢, Luis Da Costa

1 个答案:

答案 0 :(得分:0)

我想我认为你了。 来自QT Doc:

  

警告:您必须加载SQL驱动程序   然后打开连接   QSqlQuery已创建。而且,   连接必须保持打开状态   查询存在;否则,行为   QSqlQuery未定义。

因此,在打开数据库之后创建Query对象(即在方法中声明)