Qt QSqlQuery在外部主机上执行非常慢

时间:2018-06-07 08:58:32

标签: mysql qt

我想在我的主机上查询,并使用以下代码进行连接:

QSqlDatabase db_;
db_ = QSqlDatabase::addDatabase("QMYSQL","connName");
db_.setHostName("***.**.***.***");
db_.setDatabaseName("myDB");
db_.setUserName("myUserName");
db_.setPassword("myPassword");
db_.setConnectOptions("MYSQL_OPT_RECONNECT=true");
if (!db_.open())
{
    lastExtraInfo = ERROR_DB;
    return false;
}

并且连接正常。之后我想对它执行这个简单的查询:

QSqlQuery query(db_);
query.prepare("select count(*) from myTBL");
if(!query.exec())
        qDebug()<<query.lastError();

并且上面的执行没有任何错误,但需要很长时间。

当我在终端中使用以下命令并连接到服务器时,我的查询非常快,所以问题不在于服务器端。

hduser@hduser-System:~$ mysql -u myUserName -h ***.**.***.*** -p
...
mysql> select count(*) from myTBL;

当我使用localhost而不是主机并执行上述查询时,结果会非常快速地返回。所以问题不在于程序。

我对这个问题的原因感到困惑。

更新解决方案

当我改变时出人意料:

QSqlQuery query(db_);
query.prepare("select count(*) from myTBL");
if(!query.exec())
        qDebug()<<query.lastError();

QSqlQuery query(db_);
if(!query.exec("select count(*) from myTBL"))
        qDebug()<<query.lastError();
问题解决了。但我不知道为什么QSqlQuery::prepare()导致了这个问题。

0 个答案:

没有答案