QT 打开不存在的数据库

QT open not existing database

本文关键字:数据库 不存在 QT      更新时间:2023-10-16

我创建了用于连接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() 之前,最好先使用其他方法检查数据库文件是否存在。