簡體   English   中英

QT打開不存在的數據庫

[英]QT open not existing database

我創建了用於連接sqlite3數據庫的簡單函數。 但我已經認識到即使數據庫文件不存在也會建立連接

如下所示:我試圖檢查文件是否真的存在,以及它是否真的連接了。

bool DatabaseConnection::make_connection(const QString &path)
{

    db = QSqlDatabase::addDatabase("QSQLITE");
    db.setDatabaseName(path);

    #ifdef QT_DEBUG
        qDebug() << "File: '" + db.databaseName() + "' exist = " << QFileInfo::exists(db.databaseName());
        qDebug() << db.isValid();
    #endif

    if (!db.open())
    {
        QMessageBox::critical(nullptr,
            QObject::tr("Error - Cannot open database"),
            QObject::tr("Failed attempt to establish connection \n"),
            QMessageBox::Close);
        return false;
    }
    qDebug() <<"Open:" <<db.isOpen();
    qDebug() << "errors:" << db.isOpenError();
    return true;
}

在第一次編譯時更改路徑名后 - 文件不存在,但似乎建立了連接(True)。

在下一個編譯中告訴該文件存在(我無法在任何地方找到它),並且連接再次“建立”

我有類似的問題,db.open()創建新文件,如果它不存在。 只需包裝db.open()arround QFileInfo :: exists(path)。

我相信如果您嘗試訪問不存在的SQLite3數據庫,它將創建一個。 因此,如果找不到數據庫文件,db.open()將嘗試創建數據庫文件。 在調用db.open()之前,最好先使用其他方法檢查DB文件是否存在。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM