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() 之前,最好先使用其他方法检查数据库文件是否存在。
相关文章:
- 我们可以访问一个不存在的联盟的成员吗
- C++:对不存在的命名空间使用命名空间指令
- g++ 说函数不存在,即使包含正确的标头
- 显式 std::exception_ptr 转换为 bool 不存在.VS2010 错误?
- C++ 尝试在不存在的构造函数中引用已删除的函数(使用 rapidJson)
- 查找第一个数组中不存在的元素
- 查找不存在的键时,unordered_map返回什么
- 如何优化代码以返回最接近给定整数的数字,但给定列表中不存在?
- set::find 查找不存在的元素
- 有没有办法将字符串添加到 Vector 中,但前提是它尚不存在?->C++
- inet_ntop返回不存在的地址
- CPP 使用不存在的键访问映射
- 为什么QMediaGaplessPlaybackControl不存在?
- 如果键不存在,使用 [] 运算符访问 STL Map 元素会添加新元素
- 标记未定义的颜色,并且颜色匹配系统中不存在样品
- 为什么minhook库目录不存在
- 为什么 std::vector::p ush_front() 不存在?
- 不存在从"Magick::Color"到"MagickCore::Quantum"的合适转换功能
- 为什么 MDI 子窗口在WM_NCCREATE后不存在?
- QT 打开不存在的数据库