找回密码
 立即注册
收起左侧

请教mysql数据库多处连接问题

0
回复
5198
查看
[复制链接]
累计签到:118 天
连续签到:2 天
来源: 2015-6-6 09:53:19 显示全部楼层 |阅读模式

马上注册,查看详细内容!注册请先查看:注册须知

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
本帖最后由 zhuxianfei 于 2015-6-6 09:56 编辑

如题:我想在1.cpp文件中打开一个数据库连接“connection1”,将数据写进数据库,然后在2.cpp文件打开一个数据库连接“connection2”将前面我写进去的数据取出来,看代码:

  
  在1.cpp文件中:
  1. void DbConn::testDb()
  2. {
  3. QSettings sett(QApplication::applicationName() + ".ini", QSettings::IniFormat);

  4. db = QSqlDatabase::addDatabase(sett.value("MYSQL/databasedriver", "QMYSQL").toString(),"connection1");
  5. db.setHostName(sett.value("MYSQL/hostname", IPREMOTE).toString());
  6. db.setDatabaseName(sett.value("MYSQL/databasename", DATABASENAME).toString());
  7. db.setUserName(sett.value("MYSQL/username", USERNAME).toString());
  8. db.setPassword(sett.value("MYSQL/password", PASSWORD).toString());
  9. qDebug() << "opening database...";
  10. showMessage(tr("opening database"), true);
  11. if(db.open()){
  12. qDebug() << "test db open success";
  13. showMessage(tr("test database success"), false);
  14. db.close();
  15. }else{
  16. qDebug() << "test db open fail" << db.lastError().text();
  17. showMessage(tr("open database fail"), true);
  18. }
  19. }
复制代码
在2.cpp文件中:
  1. void viewer::onTestDb()
  2. {
  3. QSettings sett(QApplication::applicationName() + ".ini", QSettings::IniFormat);
  4. QSqlDatabase::addDatabase(sett.value("MYSQ/databasedriver", "QMYSQL").toString(),"connection2");
  5. db2.setHostName(sett.value("MYSQL/hostname", IPREMOTE).toString());
  6. db2.setDatabaseName(sett.value("MYSQL/databasename", DATABASENAME).toString());
  7. db2.setUserName(sett.value("MYSQL/username", USERNAME).toString());
  8. db2.setPassword(sett.value("MYSQL/password", PASSWORD).toString());
  9. qDebug() << "opening database...";
  10. ui->statusBar->showMessage(tr("testing database"));
  11. ui->statusBar->setStyleSheet("color:red");
  12. if(db2.open()){
  13. qDebug() << "test db open success";
  14. ui->statusBar->showMessage(tr("testing database success"));
  15. ui->statusBar->setStyleSheet("");
  16. db2.close();
  17. }else{
  18. qDebug() << "test db open fail" << db2.lastError().text();
  19. ui->statusBar->showMessage(tr("testing database fail"));
  20. ui->statusBar->setStyleSheet("color:red");
  21. }
  22. }

复制代码
这样子当我运行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.

请问如何处理能避开这中问题,欢迎大家讨论!谢谢

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

公告
可以关注我们的微信公众号yafeilinux_friends获取最新动态,或者加入QQ会员群进行交流:190741849、186601429(已满) 我知道了