QT mysql数据库操作

#ifndef MYSQL_H
#define MYSQL_H

#include 
#include 
#include 
#include 
#include 
#include 


QT_BEGIN_NAMESPACE
namespace Ui { class mysql; }
QT_END_NAMESPACE

class mysql : public QWidget
{
    Q_OBJECT

public:
    mysql(QWidget *parent = nullptr);
    ~mysql();

private slots:
    void on_insertButton_clicked();

    void on_queryButton_clicked();

private:
    Ui::mysql *ui;
    QSqlDatabase *db;
    QSqlTableModel *table; // 创建模型对象
};
#endif // MYSQL_H

#include "mysql.h"
#include "ui_mysql.h"

mysql::mysql(QWidget *parent)
    : QWidget(parent)
    , ui(new Ui::mysql)
{
    ui->setupUi(this);

    // 加载mysql驱动, db为QSqlDatabase类型
    db = QSqlDatabase::addDatabase("QMYSQL");

    // 使用某个数据库
    db.setDatabaseName("test");

    db.setHostName("localhost");
    db.setDatabaseName("root");
    db.setPassword("123456");

    if (db.open()) {
        QMessageBox::information(this, "连接提示", "连接成功");
        table = new QSqlTableModel; // 数据模型
        table->setTable("student");
        ui->tableView->setModel(table); // 视图模型与数据模型建立关联
    }

    else{
        QMessageBox::warning(this, "连接提示", "连接失败");
    }
}

mysql::~mysql()
{
    delete ui;
}


void mysql::on_insertButton_clicked()
{
    QString id = ui->idLineEdit->text();
    QString name = ui->nameLineEdit->text();
    QString age = ui->ageLineEdit->text();

    QString sql = QString("insert into student values (%1, '%2', '%3');").arg(id).arg(name).arg(age);


    QSqlQuery s;
    if (s.exec(sql)) {
        QMessageBox::information(this, "插入提示", "数据插入成功");

    }
    else {
        QMessageBox::warning(this, "插入提示", "数据插入失败");
    }
}


void mysql::on_queryButton_clicked()
{
    QString sql("select * from student;");
    QSqlQuery s;
    s.exec(sql);
    while(s.next()) {
        qDebug()<<s.value(0);
        qDebug()<<s.value(1);
        qDebug()<<s.value(2);
    }

}


void mysql::on_queryButton_clicked()
{
    // 一条语句代替上面循环遍历,自动将查询结果放在TableView中
    // 网格试,包括字段
    table->select();
}


你可能感兴趣的:(QT,tableview)