【问题标题】:QSqlDatabase and QSqlQuery in a Class (header)类中的 QSqlDatabase 和 QSqlQuery(标题)
【发布时间】:2011-05-31 11:06:47
【问题描述】:

我想在我的 QT 项目中创建一个类来处理 SQL 连接以及所有必要的查询和 sql 事务。

我发现没有这个错误“QSqlQuery::exec : Database not open”我只需要在 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";
    }

提前致谢, 路易斯·达科斯塔

【问题讨论】:

  • 请不要编辑问题标题以表明[已解决]。您可以接受提供的答案或添加您自己的答案来解释解决方案并接受该答案。

标签: mysql database qt class


【解决方案1】:

我想我猜到了你。 来自 QT 文档:

警告:您必须加载 SQL 驱动程序 并在 a 之前打开连接 已创建 QSqlQuery。此外,该 连接必须保持打开,而 查询存在;否则,行为 的 QSqlQuery 未定义。

所以在打开数据库后创建 Query 对象(即在方法中声明它)

【讨论】:

  • 对不起,这是我的错 XD.. 我的查询错了:S...如果我能像在 C# 或 Java 中一样在 Qt 中使用异常...那对我有很大帮助!.. . 谢谢^^
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-12-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多