[英]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.