QT 连接多个数据库,必须指定不同的连接名字
2014-01-22 14:17
127 查看
/* 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;
}
#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;
}
相关文章推荐
- QT 连接多个数据库,必须指定不同的连接名字
- QT 连接多个数据库,必须指定不同的连接名字
- plsql连接oracle时,不同ip上数据库名字相同连接的办法
- GreenDao 数据库升级 连接多个DB文件 或者指定不同的model&dao目录
- qt数据库连接
- CentOS 6.5 下 QT4 连接 mysql 数据库的步骤
- C#不同数据库连接方式对应的Sql语句的构造
- PowerDesigner逆向工程导入MYSQL数据库总结 / win7 64位数据库连接问题:在指定的 DSN 中,驱动程序和应用程序之间的体系结构不匹配
- 常用脚本--Kill所有连接到指定数据库上的回话
- qt连接数据库sqlite3,在网上看到好多人写的都有缺陷,经过努力,自己调试出来了一个
- DBCC大全集之(适用版本MS SQLServer 2008 R2)----DBCC CHECKCATALOG检查指定数据库内的目录一致性。数据库必须联机。
- mysql先连接再指定数据库
- Visual Studio 2008不能创建数据库连接出现:未能加载文件或程序集“Microsoft.SqlServer.Management.Sdk.Sfc, Version=10.0.0.0, Culture=neutral,PublicKeyToken=89845dcd8080cc91”或它的一个依赖项。系统找不到指定的文件的解决办法
- 使用 JDBC 连接不同版本 DB2 数据库的兼容性问题
- SSM框架配置多数据源连接不同的数据库
- ubuntu上 QT 连接各种数据库报错解决(QSqlDatabase: * driver not loaded )
- hibernate不同数据库的连接及方言
- Qt学习笔记之数据库的连接
- 通过Maven配置测试环境和开发环境连接不同的数据库
- Hibernate 不同数据库的连接及SQL方言