本帖最后由 zhuxianfei 于 2015-6-6 09:56 编辑
如题:我想在1.cpp文件中打开一个数据库连接“connection1”,将数据写进数据库,然后在2.cpp文件打开一个数据库连接“connection2”将前面我写进去的数据取出来,看代码:
在1.cpp文件中:- void DbConn::testDb()
- {
- QSettings sett(QApplication::applicationName() + ".ini", QSettings::IniFormat);
- db = QSqlDatabase::addDatabase(sett.value("MYSQL/databasedriver", "QMYSQL").toString(),"connection1");
- db.setHostName(sett.value("MYSQL/hostname", IPREMOTE).toString());
- db.setDatabaseName(sett.value("MYSQL/databasename", DATABASENAME).toString());
- db.setUserName(sett.value("MYSQL/username", USERNAME).toString());
- db.setPassword(sett.value("MYSQL/password", PASSWORD).toString());
- qDebug() << "opening database...";
- showMessage(tr("opening database"), true);
- if(db.open()){
- qDebug() << "test db open success";
- showMessage(tr("test database success"), false);
- db.close();
- }else{
- qDebug() << "test db open fail" << db.lastError().text();
- showMessage(tr("open database fail"), true);
- }
- }
复制代码 在2.cpp文件中:- void viewer::onTestDb()
- {
- QSettings sett(QApplication::applicationName() + ".ini", QSettings::IniFormat);
- QSqlDatabase::addDatabase(sett.value("MYSQ/databasedriver", "QMYSQL").toString(),"connection2");
- db2.setHostName(sett.value("MYSQL/hostname", IPREMOTE).toString());
- db2.setDatabaseName(sett.value("MYSQL/databasename", DATABASENAME).toString());
- db2.setUserName(sett.value("MYSQL/username", USERNAME).toString());
- db2.setPassword(sett.value("MYSQL/password", PASSWORD).toString());
- qDebug() << "opening database...";
- ui->statusBar->showMessage(tr("testing database"));
- ui->statusBar->setStyleSheet("color:red");
- if(db2.open()){
- qDebug() << "test db open success";
- ui->statusBar->showMessage(tr("testing database success"));
- ui->statusBar->setStyleSheet("");
- db2.close();
- }else{
- qDebug() << "test db open fail" << db2.lastError().text();
- ui->statusBar->showMessage(tr("testing database fail"));
- ui->statusBar->setStyleSheet("color:red");
- }
- }
复制代码 这样子当我运行1.cpp文件中的代码向数据库中写数据时(不写数据不会),再运行2.cpp文件中的代码就会报错:
QSqlDatabasePrivate::removeDatabase: connection 'connection1' is still in use, all queries will cease to work. QSqlDatabasePrivate::addDatabase: duplicate connection name 'connection1', old connection removed.
请问如何处理能避开这中问题,欢迎大家讨论!谢谢
|