【发布时间】:2019-12-19 23:24:07
【问题描述】:
我创建了用于连接 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;
}
在第一次编译时更改路径名后 - 文件不存在,但似乎已建立连接(真)。
在下一次编译中告诉该文件存在(我无法在任何地方找到它),并且再次“建立”连接
【问题讨论】:
-
解释是
QSqlDatabase创建了一个数据库文件(关闭时),即使它最初并不存在。