qt c++中的Qqlite重复连接警告
Qsqlite duplicate connection warning in qt c++
我正在qt中创建一个使用sqlite数据库的应用程序。我已经写了一个打开数据库连接的类。该类的构造函数如下所示:
currencydb::currencydb()
{
currency = QSqlDatabase::addDatabase("QSQLITE");
currency.setDatabaseName("currency.sqlite");
if(!currency.isOpen())
{
if (!currency.open())
{
qDebug() << "Error: connection with database fail";
}
else
{
qDebug() << "Database currency: connection ok";
}
}
}
由于我使用了这个构造函数,当我为数据库类创建对象时,我会收到以下警告:
QSqlDatabasePrivate::addDatabase: duplicate connection name 'qt_sql_default_connection', old connection removed.
有没有办法检查数据库是否已经打开?
该警告并不意味着您的数据库已经打开,但您已经使用默认名称连接到数据库。该连接通过(在您的情况下是SQLITEv3)数据库驱动程序提供对数据库的访问。如果在调用static公共方法QSqlDatabase::addDatabase()
时未传递连接名称参数,则创建与数据库的默认连接。
您可以使用QSqlDatabase::contains()来检查您是否已经拥有默认连接。
CurrencyDb::CurrencyDb()
{
currency = openDb("QSQLITE", "currency.sqlite");
}
QSqlDatabase CurrencyDb::openDb(const QString &driver, const QString &name) const
{
QSqlDatabase db;
// contains() default argument is initialized to default connection
if (QSqlDatabase::contains())
{
db = QSqlDatabase::database(QLatin1String(QSqlDatabase::defaultConnection), false);
}
else
{
db = QSqlDatabase::addDatabase(driver.toUpper());
}
db.setDatabaseName(name);
if (!db.isValid())
{
// Log error (last error: db.lastError().text()) and throw exception
}
if (!db.open())
{
// Log error (last error: db.lastError().text()) and throw exception
}
return db;
}
相关文章:
- 警告处理为错误这里有什么问题
- 使用动态分配的数组会导致代码分析发出虚假的C6386缓冲区溢出警告
- 当套接字连接断开时检测C/C++Unix
- cppcheck在const std::string[]上引发警告
- GCC对可能有效的代码抛出init list生存期警告
- 如何在BST的这个简单递归实现中消除警告
- 关于std::move的使用,是否有编译警告
- g++ 在某个类成员未初始化时不发出警告
- 如何处理来自核心指南检查器的关于gsl::at的静态分析警告
- 无法在windows上使用mingw将sqlite3与c连接
- 使用typeid警告未使用的变量
- 到连接组件算法的问题(递归)
- QTcpSocket在不阻塞GUI的情况下重新连接到服务器
- 无法在C++中建立与MySQL数据库的连接
- PC中的程序和PHONE中的本机描述应用程序之间的数据连接
- 在Qt Creator中,如何在连接到正在运行的进程后查看控制台输出
- 示例C++项目编译中的警告
- 连接 dockerized 模型和 dockerized 数据库时出现"无法 SQLConnect"错误
- QSqlDatabase:如何避免仍在使用'qt_sql_default_connection'和重复连接相关的警告?
- qt c++中的Qqlite重复连接警告