QSqlDatabasePrivate::addDatabase: 重复的连接名称'MyConnection'错误
QSqlDatabasePrivate::addDatabase: duplicate connection name 'MyConnection' error
我已经在C Inorder中编写了QT程序,以访问数据库并加载数据库表来表达表视图!我的程序没有显示任何编译错误,但给出了2个运行时错误
QSqlDatabasePrivate::removeDatabase: connection 'MyConnection' is still in use, all queries will cease to work.
QSqlDatabasePrivate::addDatabase: duplicate connection name 'MyConnection', old connection removed.
主要有MainWindow的类(具有数据库连接方法)和对话框以下是我的代码
mainWindow.h
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
explicit MainWindow(QWidget *parent = 0);
~MainWindow();
public: QSqlDatabase mydb;
bool conOpen(QString userName,QString password,QString hostname,int port,QString service){
mydb=QSqlDatabase::addDatabase("QOCI","MyConnection");
mydb.setUserName(userName);
mydb.setPassword(password);
mydb.setHostName(hostname);
mydb.setPort(port);
mydb.setDatabaseName(service);
return mydb.open();
}
mainwindow.cpp
void MainWindow::on_pushButton_clicked()
{
Dialog *dialog1 = new Dialog(this);
if(conOpen(ui->uname->text(),ui->pword->text(),ui->ip->text(),ui->port->text().toInt(),ui->service->text())){
dialog1->show();
}
dialog.h
class Dialog : public QDialog
{
Q_OBJECT
public:
explicit Dialog(QWidget *parent = 0);
~Dialog();
private slots:
void on_pushButton_clicked();
dialog.cpp
void Dialog::on_pushButton_clicked()
{
QSqlQueryModel *modal = new QSqlQueryModel();
if(QSqlDatabase::contains("MyConnection")){
QSqlQuery* qry=new QSqlQuery(QSqlDatabase::database("MyConnection"));
qry->prepare("select NAME FROM Employees");
qry->exec();
modal->setQuery(*qry);
ui->tableView->setModel(modal);
}
}
MainWindow表单用于登录,对话框用于将数据库表中的条目检索到表视图我该如何纠正问题?
QSqlDatabase::addDatabase
是一个静态函数,每次调用它时,都会创建一个连接实例。因此,如果您的应用程序仅建立了与数据库服务器的单个连接,则不应将其调用一次。
QSQLDATABASE QSQLDATABASE :: ADDDATABASE(const qString& type,const qString&connectName = qlatin1string(defaultConnection)(DefaultConnection))
使用驱动程序将数据库添加到数据库连接列表 类型和连接名称
connectionName
。如果已经存在 数据库连接称为connectionName
,该连接已删除。
您可能需要将打开数据库代码(包括QSqlDatabase::addDatabase
)的逻辑移动到整个应用程序中仅被调用一次的地方。
相关文章:
- 警告处理为错误这里有什么问题
- "error: no matching function for call to"构造函数错误
- boost::进程间消息队列引发错误
- C++,OpenCV,尝试显示图像时"OpenCV(4.3.0) Error: Assertion failed (size.width>0 && size.height>0)"此错误
- 有关插入适配器的错误。[错误]请求从 'back_insert_iterator<vector<>>' 类型转换为非标量类型
- QT在错误的班级中寻找空位
- vector.resize()中的分配错误
- 代码在main()中运行,但在函数中出现错误
- 释放错误后堆使用
- (C++)分析树以计算返回错误值的简单算术表达式
- Project Euler问题4的错误解决方案
- 我的字符计数代码计算错误.为什么
- 从"int*"强制转换为"unsigned int"会丢失精度错误
- 尝试导入pybind-opencv模块时出现libgtk错误
- CMake项目Boost库错误:Boost/config/compiler/gcc.hpp:165:10:致命错误:cs
- 在某些循环内使用vector.push_back时出现分段错误
- MSVC多行宏编译器错误
- 静态数据成员的问题-修复链接错误会导致编译器错误
- 为什么在运行时没有向我们提供有关分段错误的更多信息?
- QSqlDatabasePrivate::addDatabase: 重复的连接名称'MyConnection'错误