c++ - 如果数据库可达,如何快速检查? (Qt, QML, C++)- Linux

标签 c++ linux database qt qml

我将 qt 与 qml 和 c++ 结合使用。在我的应用程序中,我使用了一个数据库。 如果数据库可访问,一切正常。

我的问题是,我想检查数据库是否可访问(如 ping)。

我试过了

    db.setDatabaseName(dsn);
    if(db.isValid())
    {

        if(db.open())
        {
            //std::cout <<"Offene Datenbank";
            connected=true;

        }
        else
        {
            connected=false;
        }


    }
    else
    {
        connected=false;
    }

并给出连接值作为结果。但如果没有连接,这需要很长时间(可能 30 秒)。如果我有数据库连接,我如何快速检查?

有没有办法在 5 秒未连接后中断命令 .open?

最佳答案

我认为一个简单的解决方案是只检查数据库服务器的 ping。您可以使用特定于平台的方式进行 ping。

这会在 Linux 上运行:

int exitCode = QProcess::execute("ping", QStringList() << "-c 2" << serverIp);
if (exitCode==0) 
{
    // is reachable
} else 
{
    // is not reachable
}

关于c++ - 如果数据库可达,如何快速检查? (Qt, QML, C++)- Linux,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30183417/

相关文章:

c++ - Boost Process `system` 函数中的错误处理

c++ - 将数组传递给函数 C++

mysql - 为什么我的 Slave 没有在 MYSQL 上启动?

Python 写入 MySQL - 没有错误但没有写入

php - 如果电子邮件未确认,则从数据库中删除用户

c++ - g++ 链接器找不到 const 成员函数

python - 将 std::vector 作为 numpy 数组返回给 python

linux - echo --version 不起作用

linux - 有没有一种方法可以确定 Linux 中的音频 channel 布局?

mysql - Django 的 unique_together 功能的性能成本是多少