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

/* 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
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值