I am very new to Qt. And am trying to make MySQL Database connection using Qt and show the table information QSqlTableModel. Here are my codes:
1) .pro file
QT += core gui sql
TARGET = sri_qtdb
TEMPLATE = app
SOURCES += main.cpp\
mainwindow.cpp
HEADERS += mainwindow.h
FORMS += mainwindow.ui
2) .h file
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QMainWindow>
#include <QDebug>
#include <QtSql>
#include <QtGui>
#include <QtCore>
namespace Ui {
class MainWindow;
}
class MainWindow : public QMainWindow {
Q_OBJECT
public:
MainWindow(QWidget *parent = 0);
~MainWindow();
protected:
void changeEvent(QEvent *e);
private:
Ui::MainWindow *ui;
QSqlDatabase db;
QSqlTableModel *model;
//QTableWidget *table;
};
#endif // MAINWINDOW_H
3) .cpp files
a) main.cpp
#include <QtGui/QApplication>
#include "mainwindow.h"
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
MainWindow w;
w.show();
return a.exec();
}
b) mainwindow.cpp
#include "mainwindow.h"
#include "ui_mainwindow.h"
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
this->setCentralWidget(ui->tableView);
QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL");
db.setHostName("localhost");
db.setDatabaseName("user");
db.setUserName("root");
db.setPassword("*********");
if(!db.open()){ qDebug()<< "Failed"; }
else
{
model = new QSqlTableModel(this);
model->setTable("new_joiners");
model->select();
ui->tableView->setModel(model);
}
}
MainWindow::~MainWindow()
{
delete ui;
}
void MainWindow::changeEvent(QEvent *e)
{
QMainWindow::changeEvent(e);
switch (e->type()) {
case QEvent::LanguageChange:
ui->retranslateUi(this);
break;
default:
break;
}
}
Available drivers: QSQLITE QMYSQL3 QMYSQL
My output is always “Failed”. What am I doing wrong?
First of all, recheck your DB at
localhostand all parameters.Check if you really have needed driver:
Write your code to make it concrete and use debug capabilities. For example, if you got error on connection to DB, output last error in this way:
Good luck!