0

我正在用 Qt 编写一个服务器应用程序。并具有检查可用服务的 Loader 类。因此,为了成功启动服务器,我需要以Loader编程方式检查 MySQL 服务是否正常运行。我发现使用 QProcess 是与之相关的,但是当我编写以下代码时:

 QProcess mysql;
    mysql.start("mysql", QStringList() << "-uroot -ppassword");

    if(!mysql.waitForStarted())
        qDebug() << "Not loaded...";

    mysql.write("show databases;");
    mysql.closeWriteChannel();

    if(!mysql.waitForFinished())
        qDebug() << "Haven't finished yet!";

    QByteArray result = mysql.readAll();
    QString str(result);
    qDebug("%s", qPrintable(str));

我收到一个空字符串,你能帮忙检查一下服务是否启动了吗?

4

1 回答 1

2

我不明白你的问题。您已经在代码中:

if(!mysql.waitForStarted())
        qDebug() << "Not loaded...";

这清楚地告诉您您的 mysql 程序是否已启动。

但是,如果我可以给您一个建议,请通过 QProcess 使用 mysql 放弃您的想法。这很好启动mysql服务器,但仅此而已。查看 QSqlDatabase 的 Qt 文档。这允许您直接连接到服务器。尝试使用 QSqlDatabase 打开()您的数据库可以为您提供比您尝试使用的 QProcess 拐杖更多的信息。

编辑:将您的“readAll”更改为“readAllStandardError”。你会看到一些有趣的东西。

于 2013-08-28T08:39:49.170 回答