QT mysql数据库操作

#ifndef MYSQL_H
#define MYSQL_H

#include <QWidget>
#include <QSqlDatabase>
#include <QMessageBox>
#include <QSqlQuery>
#include <QDebug>
#include <QSqlTableModel>


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();
}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值