try this example, works fine
h
Qt Code:
  1. #ifndef TEST_H
  2. #define TEST_H
  3.  
  4. #include <QWidget>
  5.  
  6.  
  7. class Test: public QWidget
  8. {
  9. Q_OBJECT
  10.  
  11. public:
  12. Test(QWidget *parent = 0);
  13.  
  14. private slots:
  15. void connectToDb1();
  16. void connectToDb2();
  17. void showView1();
  18. void showView2();
  19.  
  20. public:
  21. QPushButton *m_pbConnectToDb1;
  22. QPushButton *m_pbConnectToDb2;
  23. QPushButton *m_pbShowView1;
  24. QPushButton *m_pbShowView2;
  25. };
  26.  
  27. #endif//TEST_H
To copy to clipboard, switch view to plain text mode 
cpp
Qt Code:
  1. #include <QtGui>
  2. #include <QtSql>
  3. #include "test.h"
  4.  
  5. Test::Test(QWidget *parent)
  6. : QWidget(parent)
  7. {
  8. QGridLayout *gl = new QGridLayout(this);
  9. m_pbConnectToDb1 = new QPushButton(tr("Connect to first database"));
  10. m_pbConnectToDb2 = new QPushButton(tr("Connect to second database"));
  11. m_pbShowView1 = new QPushButton(tr("Show first view"));
  12. m_pbShowView2 = new QPushButton(tr("Show first view"));
  13.  
  14. m_pbShowView1->setEnabled(false);
  15. m_pbShowView2->setEnabled(false);
  16.  
  17. gl->addWidget(m_pbConnectToDb1, 0, 0);
  18. gl->addWidget(m_pbConnectToDb2, 0, 1);
  19. gl->addWidget(m_pbShowView1, 1, 0);
  20. gl->addWidget(m_pbShowView2, 1, 1);
  21.  
  22. connect(m_pbConnectToDb1, SIGNAL(clicked()), SLOT(connectToDb1()));
  23. connect(m_pbConnectToDb2, SIGNAL(clicked()), SLOT(connectToDb2()));
  24. connect(m_pbShowView1, SIGNAL(clicked()), SLOT(showView1()));
  25. connect(m_pbShowView2, SIGNAL(clicked()), SLOT(showView2()));
  26. }
  27.  
  28. void Test::connectToDb1()
  29. {
  30. QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE", QLatin1String("db1"));
  31. db.setDatabaseName("db1");
  32. const bool isOpen = db.open();
  33. m_pbConnectToDb1->setEnabled(!isOpen);
  34. m_pbShowView1->setEnabled(isOpen);
  35. if (!isOpen) {
  36. QMessageBox::critical(this, tr("critical"), db.lastError().text());
  37. return;
  38. }
  39. QSqlQuery query(db);
  40. if (!db.tables().contains("table1") && !query.exec("CREATE TABLE table1 (id INT, name VARCHAR(20))")) {
  41. QMessageBox::critical(this, tr("critical"), query.lastError().text());
  42. return;
  43. }
  44.  
  45. query.prepare("INSERT INTO table1 (id, name) VALUES (?, ?)");
  46.  
  47. QVariantList ints;
  48. ints << 1 << 2 << 3 << 4;
  49. query.addBindValue(ints);
  50.  
  51. QVariantList names;
  52. names << "Harald" << "Boris" << "Trond" << QVariant(QVariant::String);
  53. query.addBindValue(names);
  54.  
  55. if (!query.execBatch()) {
  56. QMessageBox::critical(this, tr("critical"), query.lastError().text());
  57. return;
  58. }
  59. }
  60.  
  61. void Test::connectToDb2()
  62. {
  63. QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE", QLatin1String("db2"));
  64. db.setDatabaseName("db2");
  65. const bool isOpen = db.open();
  66. m_pbConnectToDb2->setEnabled(!isOpen);
  67. m_pbShowView2->setEnabled(isOpen);
  68. if (!isOpen) {
  69. QMessageBox::critical(this, tr("critical"), db.lastError().text());
  70. return;
  71. }
  72. QSqlQuery query(db);
  73. if (!db.tables().contains("table2") && !query.exec("CREATE TABLE table2 (id INT, name VARCHAR(20))")) {
  74. QMessageBox::critical(this, tr("critical"), query.lastError().text());
  75. return;
  76. }
  77.  
  78. query.prepare("INSERT INTO table2 (id, name) VALUES (?, ?)");
  79.  
  80. QVariantList ints;
  81. ints << 5 << 6 << 7 << 8;
  82. query.addBindValue(ints);
  83.  
  84. QVariantList names;
  85. names << "Tom" << "Jim" << "John" << QVariant(QVariant::String);
  86. query.addBindValue(names);
  87.  
  88. if (!query.execBatch()) {
  89. QMessageBox::critical(this, tr("critical"), query.lastError().text());
  90. return;
  91. }
  92. }
  93.  
  94. void Test::showView1()
  95. {
  96. QSqlDatabase db = QSqlDatabase::database(QLatin1String("db1"));
  97. QSqlTableModel *model = new QSqlTableModel(0, db);
  98. model->setTable("table1");
  99. model->select();
  100.  
  101. QTableView *view = new QTableView();
  102. view->setAttribute(Qt::WA_DeleteOnClose);
  103. view->setModel(model);
  104. view->show();
  105. }
  106.  
  107. void Test::showView2()
  108. {
  109. QSqlDatabase db = QSqlDatabase::database(QLatin1String("db2"));
  110. QSqlTableModel *model = new QSqlTableModel(0, db);
  111. model->setTable("table2");
  112. model->select();
  113.  
  114. QTableView *view = new QTableView();
  115. view->setAttribute(Qt::WA_DeleteOnClose);
  116. view->setModel(model);
  117. view->show();
  118. }
To copy to clipboard, switch view to plain text mode