#include <QtGui>
#include <QtSql>
#include "test.h"
{
m_pbConnectToDb1
= new QPushButton(tr
("Connect to first database"));
m_pbConnectToDb2
= new QPushButton(tr
("Connect to second database"));
m_pbShowView1
= new QPushButton(tr
("Show first view"));
m_pbShowView2
= new QPushButton(tr
("Show first view"));
m_pbShowView1->setEnabled(false);
m_pbShowView2->setEnabled(false);
gl->addWidget(m_pbConnectToDb1, 0, 0);
gl->addWidget(m_pbConnectToDb2, 0, 1);
gl->addWidget(m_pbShowView1, 1, 0);
gl->addWidget(m_pbShowView2, 1, 1);
connect(m_pbConnectToDb1, SIGNAL(clicked()), SLOT(connectToDb1()));
connect(m_pbConnectToDb2, SIGNAL(clicked()), SLOT(connectToDb2()));
connect(m_pbShowView1, SIGNAL(clicked()), SLOT(showView1()));
connect(m_pbShowView2, SIGNAL(clicked()), SLOT(showView2()));
}
void Test::connectToDb1()
{
db.setDatabaseName("db1");
const bool isOpen = db.open();
m_pbConnectToDb1->setEnabled(!isOpen);
m_pbShowView1->setEnabled(isOpen);
if (!isOpen) {
QMessageBox::critical(this, tr
("critical"), db.
lastError().
text());
return;
}
if (!db.tables().contains("table1") && !query.exec("CREATE TABLE table1 (id INT, name VARCHAR(20))")) {
QMessageBox::critical(this, tr
("critical"), query.
lastError().
text());
return;
}
query.prepare("INSERT INTO table1 (id, name) VALUES (?, ?)");
QVariantList ints;
ints << 1 << 2 << 3 << 4;
query.addBindValue(ints);
QVariantList names;
query.addBindValue(names);
if (!query.execBatch()) {
QMessageBox::critical(this, tr
("critical"), query.
lastError().
text());
return;
}
}
void Test::connectToDb2()
{
db.setDatabaseName("db2");
const bool isOpen = db.open();
m_pbConnectToDb2->setEnabled(!isOpen);
m_pbShowView2->setEnabled(isOpen);
if (!isOpen) {
QMessageBox::critical(this, tr
("critical"), db.
lastError().
text());
return;
}
if (!db.tables().contains("table2") && !query.exec("CREATE TABLE table2 (id INT, name VARCHAR(20))")) {
QMessageBox::critical(this, tr
("critical"), query.
lastError().
text());
return;
}
query.prepare("INSERT INTO table2 (id, name) VALUES (?, ?)");
QVariantList ints;
ints << 5 << 6 << 7 << 8;
query.addBindValue(ints);
QVariantList names;
query.addBindValue(names);
if (!query.execBatch()) {
QMessageBox::critical(this, tr
("critical"), query.
lastError().
text());
return;
}
}
void Test::showView1()
{
model->setTable("table1");
model->select();
view->setAttribute(Qt::WA_DeleteOnClose);
view->setModel(model);
view->show();
}
void Test::showView2()
{
model->setTable("table2");
model->select();
view->setAttribute(Qt::WA_DeleteOnClose);
view->setModel(model);
view->show();
}
#include <QtGui>
#include <QtSql>
#include "test.h"
Test::Test(QWidget *parent)
: QWidget(parent)
{
QGridLayout *gl = new QGridLayout(this);
m_pbConnectToDb1 = new QPushButton(tr("Connect to first database"));
m_pbConnectToDb2 = new QPushButton(tr("Connect to second database"));
m_pbShowView1 = new QPushButton(tr("Show first view"));
m_pbShowView2 = new QPushButton(tr("Show first view"));
m_pbShowView1->setEnabled(false);
m_pbShowView2->setEnabled(false);
gl->addWidget(m_pbConnectToDb1, 0, 0);
gl->addWidget(m_pbConnectToDb2, 0, 1);
gl->addWidget(m_pbShowView1, 1, 0);
gl->addWidget(m_pbShowView2, 1, 1);
connect(m_pbConnectToDb1, SIGNAL(clicked()), SLOT(connectToDb1()));
connect(m_pbConnectToDb2, SIGNAL(clicked()), SLOT(connectToDb2()));
connect(m_pbShowView1, SIGNAL(clicked()), SLOT(showView1()));
connect(m_pbShowView2, SIGNAL(clicked()), SLOT(showView2()));
}
void Test::connectToDb1()
{
QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE", QLatin1String("db1"));
db.setDatabaseName("db1");
const bool isOpen = db.open();
m_pbConnectToDb1->setEnabled(!isOpen);
m_pbShowView1->setEnabled(isOpen);
if (!isOpen) {
QMessageBox::critical(this, tr("critical"), db.lastError().text());
return;
}
QSqlQuery query(db);
if (!db.tables().contains("table1") && !query.exec("CREATE TABLE table1 (id INT, name VARCHAR(20))")) {
QMessageBox::critical(this, tr("critical"), query.lastError().text());
return;
}
query.prepare("INSERT INTO table1 (id, name) VALUES (?, ?)");
QVariantList ints;
ints << 1 << 2 << 3 << 4;
query.addBindValue(ints);
QVariantList names;
names << "Harald" << "Boris" << "Trond" << QVariant(QVariant::String);
query.addBindValue(names);
if (!query.execBatch()) {
QMessageBox::critical(this, tr("critical"), query.lastError().text());
return;
}
}
void Test::connectToDb2()
{
QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE", QLatin1String("db2"));
db.setDatabaseName("db2");
const bool isOpen = db.open();
m_pbConnectToDb2->setEnabled(!isOpen);
m_pbShowView2->setEnabled(isOpen);
if (!isOpen) {
QMessageBox::critical(this, tr("critical"), db.lastError().text());
return;
}
QSqlQuery query(db);
if (!db.tables().contains("table2") && !query.exec("CREATE TABLE table2 (id INT, name VARCHAR(20))")) {
QMessageBox::critical(this, tr("critical"), query.lastError().text());
return;
}
query.prepare("INSERT INTO table2 (id, name) VALUES (?, ?)");
QVariantList ints;
ints << 5 << 6 << 7 << 8;
query.addBindValue(ints);
QVariantList names;
names << "Tom" << "Jim" << "John" << QVariant(QVariant::String);
query.addBindValue(names);
if (!query.execBatch()) {
QMessageBox::critical(this, tr("critical"), query.lastError().text());
return;
}
}
void Test::showView1()
{
QSqlDatabase db = QSqlDatabase::database(QLatin1String("db1"));
QSqlTableModel *model = new QSqlTableModel(0, db);
model->setTable("table1");
model->select();
QTableView *view = new QTableView();
view->setAttribute(Qt::WA_DeleteOnClose);
view->setModel(model);
view->show();
}
void Test::showView2()
{
QSqlDatabase db = QSqlDatabase::database(QLatin1String("db2"));
QSqlTableModel *model = new QSqlTableModel(0, db);
model->setTable("table2");
model->select();
QTableView *view = new QTableView();
view->setAttribute(Qt::WA_DeleteOnClose);
view->setModel(model);
view->show();
}
To copy to clipboard, switch view to plain text mode
Bookmarks