QT 连接多个数据库,必须指定不同的连接名字

5 篇文章 0 订阅
/* QT 连接多个数据库,必须指定不同的连接名字 */

	#include "q2.h"

	#include <QSqlDatabase>
	#include <QSqlError>
	#include <QSqlQuery>

	QSqlDatabase *db;
	QSqlDatabase *db2;


	q2::q2(QWidget *parent, Qt::WFlags flags)
		: QMainWindow(parent, flags)
	{
		ui.setupUi(this);

		db = new QSqlDatabase(QSqlDatabase::addDatabase("QMYSQL"));	// 没指定连接名字,则为默认库
		db->setDatabaseName("sns");
		db->setHostName("127.0.0.1");
		db->setPort(3306);
		db->setUserName("root");
		db->setPassword("");
		if (! db->open()) {
			QSqlError e = db->lastError();
			qFatal("ServerDB db1: Failed initialization: %s",qPrintable(e.text()));
		}

		db2 = new QSqlDatabase(QSqlDatabase::addDatabase("QMYSQL", "db2"));	// 如果要连接多个数据库,必须指定不同的连接名字,否则会覆盖上面的默认连接
		db2->setDatabaseName("bbs");
		db2->setHostName("127.0.0.1");
		db2->setPort(3306);
		db2->setUserName("root");
		db2->setPassword("");
		if (! db2->open()) {
			QSqlError e = db2->lastError();
			qFatal("ServerDB db1 : Failed initialization: %s",qPrintable(e.text()));
		}
	}

	void q2::on_pushButton_clicked()
	{
		if (db->isValid())
		{
			QSqlQuery query;	// 查默认库,即 db
		
			if (query.prepare("select * from users"))
			{
				if (query.exec())
				{
					if (query.next())
						ui.pushButton->setText(query.value(2).toString());
					else
						qWarning("SQL Error [%s]: %s", qPrintable(query.lastQuery()), qPrintable(query.lastError().text()));
				}
				else
				{
					qWarning("SQL Error [%s]: %s", qPrintable(query.lastQuery()), qPrintable(query.lastError().text()));
				}
			}
			else
			{
				qWarning("SQL Error [%s]: %s", qPrintable(query.lastQuery()), qPrintable(query.lastError().text()));
			}
		}
		else
		{
			qWarning("SQL rejected: Database is gone");
		}
	}

	void q2::on_pushButton_2_clicked()
	{
		if (db2->isValid())
		{
			QSqlQuery query(*db2);	// 查另一个数据库 db2

			if (query.prepare("select * from users"))
			{
				if (query.exec())
				{
					if (query.next())
						ui.pushButton_2->setText(query.value(2).toString());
					else
						qWarning("SQL Error [%s]: %s", qPrintable(query.lastQuery()), qPrintable(query.lastError().text()));
				}
				else
				{
					qWarning("SQL Error [%s]: %s", qPrintable(query.lastQuery()), qPrintable(query.lastError().text()));
				}
			}
			else
			{
				qWarning("SQL Error [%s]: %s", qPrintable(query.lastQuery()), qPrintable(query.lastError().text()));
			}
		}
		else
		{
			qWarning("SQL rejected: Database is gone");
		}
	}


	q2::~q2()
	{
		db->close();
		delete db;
		db = NULL;

		db2->close();
		delete db2;
		db2 = NULL;
	}

  • 1
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值